Python 使用变量而不是文字时的AssertionError

Python 使用变量而不是文字时的AssertionError,python,selenium,webdriver,Python,Selenium,Webdriver,我将SeleniumWebDriver与Python一起使用。我有如下代码。当我在driver.page\u source中使用assert时,为什么会得到AssertionError?如果使用文本(如字符串),则测试通过,而不是变量 import unittest from selenium import webdriver from selenium.webdriver.common.keys import Keys import sys from instream import InStr

我将SeleniumWebDriver与Python一起使用。我有如下代码。当我在driver.page\u source中使用assert时,为什么会得到AssertionError?如果使用文本(如字符串),则测试通过,而不是变量

import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import sys
from instream import InStream
from outstream import OutStream
import stdio

class PythonOrgSearch(unittest.TestCase):

    def setUp(self):
        self.driver = webdriver.Firefox()

    def test_search_in_python_org(self):
        driver = self.driver
        s = 'Ireland'
        driver.get("http://www.python.org")
        self.assertIn("Python", driver.title)
        elem = driver.find_element_by_name("q")
        elem.send_keys("pycon")
        elem.send_keys(Keys.RETURN)
        assert s in driver.page_source

    def tearDown(self):
        self.driver.close()       

if __name__ == "__main__":
    unittest.main()
这是一个时间问题(同样也存在)。该断言是在搜索结果尚未加载时作出的,因此,
irland
尚未出现在
页面的
中。添加等待通孔以使测试更可靠:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By


driver = webdriver.Firefox()

s = 'Ireland'
driver.get("http://www.python.org")
wait = WebDriverWait(driver, 10)

elem = driver.find_element_by_name("q")
elem.send_keys("pycon")
elem.send_keys(Keys.RETURN)

# wait for results to be visible
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".list-recent-events li")))

assert s in driver.page_source

请注意,
.list recent events li
是一个CSS选择器,它与结果事件列表中的第一个事件相匹配。

我无法复制,请添加一个完整的可运行示例。您是否在驱动程序中说
断言“Ireland”。page\u source
通过并在驱动程序中断言s。page\u source
失败?或者
self.assertIn(“Python”,driver.title)
在driver.page\u source中传递和
asserts失败?@padraiccningham我认为这只是两个不同的执行-一个加载了结果,一个没有加载..OP得出了错误的结论。这和他们说他们看到不明飞行物的方式很相似:)@alecxe,哈哈,只要没有人被探测到……非常感谢:)这就解决了问题。