基于未格式化内容的网站内容的硒测试作为预期值

时间:2014-03-04 18:14:50

标签: html selenium

我能够成功测试内容中没有任何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。

提前感谢您的帮助。

2 个答案:

答案 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");

}