我正在使用Selenium WebDriver,如何检查页面中是否存在某些文本?也许有人推荐我有用的资源,我可以阅读它。感谢
答案 0 :(得分:45)
使用XPath,并不难。只需搜索包含给定文本的所有元素:
List<WebElement> list = driver.findElements(By.xpath("//*[contains(text(),'" + text + "')]"));
Assert.assertTrue("Text not found!", list.size() > 0);
official documentation对此类任务不太支持,但它仍然是基本工具。
JavaDocs更大,但需要一些时间才能完成所有有用且无用的内容。
要学习XPath,只需follow the internet。该规范也是一个令人惊讶的好读。
修改强>
或者,如果您不希望Implicit Wait使上述代码等待文本显示,您可以采用以下方式执行操作:
String bodyText = driver.findElement(By.tagName("body")).getText();
Assert.assertTrue("Text not found!", bodyText.contains(text));
答案 1 :(得分:20)
这将帮助您检查网页中是否有必需的文字。
driver.getPageSource().contains("Text which you looking for");
答案 2 :(得分:12)
您可以像这样检索整个页面的正文:
bodyText = self.driver.find_element_by_tag_name('body').text
然后使用断言来检查它:
self.assertTrue("the text you want to check for" in bodyText)
当然,您可以是特定的并检索特定DOM元素的文本,然后检查它而不是检索整个页面。
答案 3 :(得分:6)
Selenium 2 webdriver中没有verifyTextPresent,因此您可以检查页面源中的文本。请参阅下面的一些实际示例。
在Python驱动程序中,您可以编写以下函数:
def is_text_present(self, text):
return str(text) in self.driver.page_source
然后将其用作:
try: self.is_text_present("Some text.")
except AssertionError as e: self.verificationErrors.append(str(e))
要使用正则表达式,请尝试:
def is_regex_text_present(self, text = "(?i)Example|Lorem|ipsum"):
self.assertRegex(self.driver.page_source, text)
return True
有关完整示例,请参阅:FooTest.py
file。
或者在下面查看其他一些替代方案:
self.assertRegexpMatches(self.driver.find_element_by_xpath("html/body/div[1]/div[2]/div/div[1]/label").text, r"^[\s\S]*Weather[\s\S]*$")
assert "Weather" in self.driver.find_element_by_css_selector("div.classname1.classname2>div.clearfix>label").text
来源:Another way to check (assert) if text exists using Selenium Python
在Java中有以下功能:
public void verifyTextPresent(String value)
{
driver.PageSource.Contains(value);
}
,用法是:
try
{
Assert.IsTrue(verifyTextPresent("Selenium Wiki"));
Console.WriteLine("Selenium Wiki test is present on the home page");
}
catch (Exception)
{
Console.WriteLine("Selenium Wiki test is not present on the home page");
}
来源:Using verifyTextPresent in Selenium 2 Webdriver
对于Behat,您可以使用Mink extension。它具有MinkContext.php
中定义的以下方法:
/**
* Checks, that page doesn't contain text matching specified pattern
* Example: Then I should see text matching "Bruce Wayne, the vigilante"
* Example: And I should not see "Bruce Wayne, the vigilante"
*
* @Then /^(?:|I )should not see text matching (?P<pattern>"(?:[^"]|\\")*")$/
*/
public function assertPageNotMatchesText($pattern)
{
$this->assertSession()->pageTextNotMatches($this->fixStepArgument($pattern));
}
/**
* Checks, that HTML response contains specified string
* Example: Then the response should contain "Batman is the hero Gotham deserves."
* Example: And the response should contain "Batman is the hero Gotham deserves."
*
* @Then /^the response should contain "(?P<text>(?:[^"]|\\")*)"$/
*/
public function assertResponseContains($text)
{
$this->assertSession()->responseContains($this->fixStepArgument($text));
}
答案 4 :(得分:2)
在python中,你可以简单地检查如下:
# on your `setUp` definition.
from selenium import webdriver
self.selenium = webdriver.Firefox()
self.assertTrue('your text' in self.selenium.page_source)
答案 5 :(得分:1)
您可以按照以下方式检查页面来源中的文字:
Assert.IsTrue(driver.PageSource.Contains("Your Text Here"))
答案 6 :(得分:1)
在c#中,此代码将帮助您检查网页中是否存在所需文本。
Assert.IsTrue(driver.PageSource.Contains("Type your text here"));
答案 7 :(得分:0)
boolean Error = driver.getPageSource().contains("Your username or password was incorrect.");
if (Error == true)
{
System.out.print("Login unsuccessful");
}
else
{
System.out.print("Login successful");
}
答案 8 :(得分:0)
JUnit + Webdriver
assertEquals(driver.findElement(By.xpath("//this/is/the/xpath/location/where/the/text/sits".getText(),"insert the text you're expecting to see here");
如果您期望的文本与xpath文本不匹配,则webdriver会告诉您实际文本与期望的文本。
答案 9 :(得分:0)
string_website.py
网页中的搜索字符串
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
browser = webdriver.Firefox()
browser.get("https://www.python.org/")
content=browser.page_source
result = content.find('integrate systems')
print ("Substring found at index:", result )
if (result != -1):
print("Webpage OK")
else: print("Webpage NOT OK")
#print(content)
browser.close()
运行
python test_website.py
在索引处找到子字符串:26722
网页确定
d:\ tools> python test_website.py
在索引-1处找到子字符串; -1表示什么也没找到
网页不正常