Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用selenium 2检查网页上是否存在某些文本?_Python_Automated Tests_Selenium Webdriver - Fatal编程技术网

Python 如何使用selenium 2检查网页上是否存在某些文本?

Python 如何使用selenium 2检查网页上是否存在某些文本?,python,automated-tests,selenium-webdriver,Python,Automated Tests,Selenium Webdriver,您好,我正在使用selenium对网页进行自动化测试。 我正在使用selenium 2和python,只想在这个框架中找到答案。 那么,如何检查是否存在某些文本?我试过asset equals,但它不起作用 assertEquals(driver.getPageSource().contains("email"), true); 您可以使用driver.page\u source和一个简单的正则表达式来检查文本是否存在: import re src = driver.page_sour

您好,我正在使用selenium对网页进行自动化测试。 我正在使用selenium 2和python,只想在这个框架中找到答案。 那么,如何检查是否存在某些文本?我试过asset equals,但它不起作用

assertEquals(driver.getPageSource().contains("email"), true);

您可以使用
driver.page\u source
和一个简单的正则表达式来检查文本是否存在:

import re    
src = driver.page_source
text_found = re.search(r'text_to_search', src)
self.assertNotEqual(text_found, None)

你可以试试类似的东西

browser = webdriver.Firefox()
browser.get(url)
WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.LINK_TEXT, 'some link text')))
从本质上说,以上几行启动Firefox,导航到指定的url,使浏览器保持10秒钟,以便加载某些url,然后查找特定的链接文本,如果没有找到链接文本,则会触发TimeoutException

请注意所用括号的数量,如果括号的数量与上述不一致,您将遇到错误

要运行上述语句,必须声明以下内容

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

这使用了“元素可点击”-此处可以找到等待条件的完整列表:

对于仍感兴趣的人:

通用解决方案

if text in driver.page_source:
    # text exists in page
单元测试

assertTrue(text in driver.page_source)
assert text in driver.page_source
pytest

assertTrue(text in driver.page_source)
assert text in driver.page_source

上下文在这里是一件美妙的事情-你说它不起作用是什么意思?它怎么不起作用?它有什么作用?在您试图获取的元素周围发布一份HTML副本。为什么要扫描整个页面源代码?您可能需要回到Selenium教程的绘图板上。细微的更正:pytest one甚至可以(应该)像在驱动程序中断言文本一样简单。page_source感谢您的反馈。我修改了我的答案。这是否意味着文本是“可见”的,或者只是它存在于源代码中的某个地方,但可能被css或下拉列表等隐藏?@Jeppe这意味着它只是在HTML源代码中-因此,是的,它可以通过css隐藏。应该考虑这个问题,并对解决方案进行逐页测试。@Chickenfeets谢谢。“Boon kwee”的答案依赖于WebDriverWait来等待元素被点击——因此它必须是完全可见的。此处提供的其他等待条件: