python - 使用变量而不是文字时出现断言错误

标签 python selenium webdriver

我正在使用 Selenium WebDriver 和 Python。我有如下代码。当我使用 assert <some variable> in driver.page_source 时,为什么会出现断言错误? ?如果我使用文字(例如字符串)而不是变量,测试就会通过。

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()

最佳答案

这是一个计时问题(也复制了它)。该断言是在搜索结果尚未加载时做出的,因此 Ireland 尚未出现在 page_source 中。通过 WebDriverWait 添加等待使测试更加可靠:

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 选择器,它与结果事件列表中的第一个事件相匹配。

关于python - 使用变量而不是文字时出现断言错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37778463/

相关文章:

python - 求函数在给定区间内的根

selenium - 如何从 html 站点获取 xpath

java - 使用selenium时如何处理windows文件上传窗口

python - Seaborn.countplot : order categories by count

python - 寻找机器人导航的算法

python - 如何优化图像比较脚本的性能?

python - 无法从每次单击时激活的类似容器的盒子中解析信息

python - 如何使用 Selenium(Python) 单击表格内的按钮

java - Selenium WebDriver 使用三个框架。无法找到该元素

ruby - 关闭自身的子浏览器窗口显然会破坏 Watir-webdriver 到父窗口的链接?