我能够成功测试内容中没有任何html元素格式的网站内容,例如<b>
,<i>
,<sup>
等。这很容易。我只使用String.equals("expectedContent")
。但是,如果中间涉及html元素,例如<br>
或<p>
,则测试失败,因为未包含在未格式化的预期内容中。有没有办法让Selenium忽略那些html元素,这样我可以比较苹果和苹果?
这里是示例html:
<p><strong>Paragraph-a.</strong></p>
<div>
<p>paragraph-b.</p><p>paragraph-c.</p>
</div>
我的测试内容是:段落-a。段-B。段-C。
提前感谢您的帮助。
答案 0 :(得分:1)
以下结果基于问题中的HTML,稍加修改后在第一段中包含<br>
标记。
<html><body>
<p><strong>Para<br>graph-a.</strong></p>
<div>
<p>paragraph-b.</p><p>paragraph-c.</p>
</div>
</body></html>
我正在使用的Python 2.7.6代码如下:
from selenium import webdriver
browser = webdriver.Firefox()
browser.get("file:///C:\testing\\test.html")
element = browser.find_element_by_xpath("/html/body")
print element.text
browser.close()
简单的XPath /html/body
检索没有任何标记的元素。
Para
graph-a.
paragraph-b.
paragraph-c.
我可以使用/html/body/p/strong
深入查看第一段的内容。
Para
graph-a.
你能说出我认为问题是什么吗?标签在没有输出<strong>
的意义上消失,但<br>
标签会转换为换行符。让我们在浏览器关闭之前向Python脚本添加几行代码:
from selenium import webdriver
browser = webdriver.Firefox()
browser.get("file:///C:\testing\\test.html")
element = browser.find_element_by_xpath("/html/body/p/strong")
print element.text
print text == "Paragraph-a."
print text == "Para<br>graph-a."
print text == "Para\ngraph-a."
browser.close()
此脚本输出以下内容:
Para
graph-a.
False
False
True
结论是,虽然我们可以忽略大多数HTML标记,但在与包含换行符的元素进行比较时我们需要小心。
答案 1 :(得分:0)
请尝试下面给出的脚本
int no_of_paragraphs = driver.findElements(By.tagName("p")).size();
for(int i=1;i<=no_of_paragraphs;i++)
{
System.out.print(driver.findElement(By.cssSelector("p:nth-of-type("+i+")")).getText() + "\t");
}