Python 使用变量而不是文字时的AssertionError
我将SeleniumWebDriver与Python一起使用。我有如下代码。当我在driver.page\u source中使用assert时,为什么会得到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
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,哈哈,只要没有人被探测到……非常感谢:)这就解决了问题。