如果我希望页面显示5个优惠,我如何告诉webdriver列出ul中的所有5个优惠?
Ul html代码
<ul id="more-load" class="product_list_widget pagination-centered" style="padding-top:15px;">
我想你会用
List<WebElement> allElements = driver.findElements(By.xpath("//div[@id='more-load']/ul/li"));
for (WebElement element: allElements) {
System.out.println(element.getText());
}
但我不确定如何在Ul中打印每个单独的优惠并匹配预期显示的5个优惠
已编辑的代码
从不介意使用它并且工作
WebElement allElements = driver.findElement(By.id("more-load"));
List<WebElement> liElements = allElements.findElements(By.tagName("li"));
for (int i = 0; i < liElements.size(); i++)
{
System.out.println("-------------------------------------------------------");
System.out.println(liElements.get(i).getText());
}
但是,如果我在左侧有一个列,其中ul =产品类别,我将如何循环它以浏览每个单独的链接文本并执行相同的功能
答案 0 :(得分:0)
让我们说你的5个优惠如下:
Offer1
Offer2
Offer3
Offer4
Offer5
现在你的方法是正确的,直到循环:
然后你可以做类似的事情:
String offerString = Offer1 + " " + Offer2 + " " + Offer3 + " " + Offer4 + " " + Offer5;
for (WebElement element: allElements) {
if(offerString.contains(element.getText()){
System.out.println("Offer item is: " + element.getText());
}
}
答案 1 :(得分:0)
坚持原来的尝试,除了改变线:
List<WebElement> allElements = driver.findElements(By.xpath("//div[@id='more-load']/ul/li"));
到
List<WebElement> allElements = driver.findElements(By.xpath("//ul[@id='more-load']/li"));
答案 2 :(得分:0)
使用java8:
List<String> offers = driver
.findElements(By.cssSelector("#more-load li"))
.stream()
.map(WebElement::getText)
.collect(Collectors.toList());
你可以断言 offers.size()以获得任何断言库的预期值
要在UL中获取链接的文本元素,您可以使用下一个选择器:
driver.findElements(By.cssSelector("ul a"))