我有一个返回WebElement
的函数。现在我需要找出它的出现或说它存在的时间。
E.g。
@Test
public void elementCount() {
navigate("https://www.msn.com");
WebElement element = driver.findElement(By.xpath("//a"));
if (elementCount(element)>0){
foo();
} else {
bar();
}
}
我有另一个方法,它将参数作为字符串:
public int elementCount(String string) {
int i = driver.findElements(By.xpath(string)).size();
if (i > 0) {
System.out.println("Element count is "+i);
} else {
System.out.println("Element not found);
}
return i;
}
我需要另一种方法,它将WebElement
作为参数并给我计数。我尝试使用By
投射它,但它给了我错误org.openqa.selenium.remote.RemoteWebElement cannot be cast to org.openqa.selenium.By
无法想到任何其他内容。
我正在使用Windows,Java,Selenium,testNg,Maven
答案 0 :(得分:0)
List <WebElement> ele=driver.findElements(By.tagName("a"));
System.out.println(ele.size());
答案 1 :(得分:0)
driver.findElements(By.xpath(string));
将返回Web元素列表
然后你可以像这样定义方法:
public int getCount(List<WebElement> ele){
if(ele!=null)return ele.size();
return 0; // or can throw the exception
}
答案 2 :(得分:0)
overload表示WebElement中的单个 HTML 元素。因此,每个 WebElement 都是唯一的,它的存在不能出现在HTML DOM的多个位置。
要了解 WebElement ,您需要按如下方式调用DOM Tree方法:
<a>
但是根据您的代码试用,如果您想查找任何特定代码的数字,例如driver.navigate().to("https://www.msn.com");
List<WebElement> elementList = driver.findElements(By.tagName("a"));
if (elementList.size()>0){
foo();
} else {
bar();
}
在这种情况下,您必须按如下方式调用findElement()
方法:
String
如果您正在寻找一个将参数作为public int elementCount(String myString) {
int i = driver.findElements(By.xpath(myString)).size();
if (i > 0) {
System.out.println("Element count is : "+i);
} else {
System.out.println("No such element found matching the provided xpath");
}
return i;
}
的方法,您可以使用以下代码块:
main()
现在,您可以随时通过@Test
/ xpath
调用该方法以及所需的int myCount = elementCount("//*[contains(text(),'paul')]")
:
expected: "false" got: ""
答案 3 :(得分:0)
您无法从现有元素中提取定位器。
在您的示例中,您传递了表示定位器的String
并获取已找到元素的计数。我建议您稍微更改一下以取代By
。
如果你选择String
,该方法将绑定到某个定位器类型,即你的XPath。如果您使用By
定位器,则可以使用一种采用任何定位器类型的方法。
我建议你将方法改为
public int elementCount(By locator) {
return driver.findElements(locator).size();
}
如果您要测试的只是元素的存在(例如,计数&gt; 0,就像您的测试用例一样),那么您可以将上述函数更改为
public bool elementExists(By locator) {
return driver.findElements(locator).size() > 0;
}
使用此方法会将您的测试用例更改为
@Test
public void elementCount() {
navigate("https://www.msn.com");
elementExists(By.tagName("a")) ? foo() : bar();
}