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

grv*_*grv 15 python automated-tests selenium-webdriver

嗨,我使用selenium自动测试网页.我正在使用selenium 2和python,并希望只在这个框架中得到答案.那我如何检查是否存在某些文字?我试过资产等于但它没有用?

assertEquals(driver.getPageSource().contains("email"), true);
Run Code Online (Sandbox Code Playgroud)

lim*_*lim 21

您可以使用driver.page_source简单的正则表达式来检查文本是否存在:

import re    
src = driver.page_source
text_found = re.search(r'text_to_search', src)
self.assertNotEqual(text_found, None)
Run Code Online (Sandbox Code Playgroud)


Chi*_*eet 17

对于那些仍然感兴趣的人:

通用解决方案

if (text in driver.page_source):
     # text exists in page
Run Code Online (Sandbox Code Playgroud)

unittest:

assertTrue (text in driver.page_source)
Run Code Online (Sandbox Code Playgroud)

pytest:

assert (text in driver.page_source) 
Run Code Online (Sandbox Code Playgroud)


小智 5

你可以尝试类似的东西

browser = webdriver.Firefox()
browser.get(url)
WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.LINK_TEXT, 'some link text')))
Run Code Online (Sandbox Code Playgroud)

本质上,上面几行启动了 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
Run Code Online (Sandbox Code Playgroud)

这使用“element_to_be_clickable” - 可以在此处找到等待条件的完整列表:Selenium Python:等待