我需要验证特定属性:“ TNT” /“食物” /“其他东西”是否可见并正确显示(字符串可以)。 DOM看起来很糟糕:
<div class="w-50" style="" xpath="1">
<div style="">
<!-- react-text: 231670 -->Categories<!-- /react-text --><!-- react-text: 231671 -->:<!-- /react-text -->
</div>
<div style="padding-left: 10px; display: flex;">
<div style="">Juomat</div>
<div style="margin-left: auto; margin-right: 100px;">126</div>
</div>
<div style="padding-left: 10px; display: flex;">
<div>TNT</div>
<div style="margin-left: auto; margin-right: 100px;">2</div>
</div>
<div style="padding-left: 10px; display: flex;">
<div>Food</div>
<div style="margin-left: auto; margin-right: 100px;">12</div>
</div>
<div style="padding-left: 10px; display: flex;">
<div>Another Stuffs</div>
<div style="margin-left: auto; margin-right: 100px;">2</div>
</div>
</div>
我试图找到它:// div [@class ='w-50'] [2](我们有两个与w-50相同的类),并添加单词“ contains”,并以某种方式命名这些元素但是要从中获取文本,我需要将其单独保存。
您能告诉我xpath定位器以及在这种情况下如何进行断言吗?
答案 0 :(得分:1)
看起来很丑,但是
(.//*[@class='w-50']/div/div)[1]
应该以列表中的第一个元素为目标,并且可以断言它的文本为'Juomat'
(.//*[@class='w-50']/div/div)[3]
将定位列表中的下一个元素,您可以断言它的文本为'TNT'
重复此列表中的其他元素。如果您愿意,此定位器还可以定位数字
答案 1 :(得分:1)
我对C#不太熟悉,我也以某种方式了解您的问题。
问题:检查字符串(产品)列表在网页中是否可用/可见。如果不对,请纠正我。
下面是Java代码,如果逻辑正确,则将其转换为C#。
List<String> list = new ArrayList<String>();
list.add("Juomat");
list.add("TNT");
list.add("Food");
list.add("Another Stuffs");
// list.add - add whatever products you needed later (dynamically if needed)
list.add("XXX");
String xp = "//div[@class = 'w-50']";
for(String item: list) {
try {
WebElement element = driver.findElement(By.xpath(xp + "/div/div[1][.='"+ item +"']"));
if(item.equals(element.getText()))
System.out.println(item +" is Visible");
}
catch(Exception e) {
System.out.println(item + " is not Visible");
}
}