其他Web元素也被视为List <WebElement>

时间:2019-08-08 15:37:15

标签: selenium selenium-webdriver

访问列表的网络元素之后。其他网络元素也被视为“列表”网络元素。

List<WebElement> BrandTerms =driver.findElements(BrandTerm); 
js = (JavascriptExecutor) driver;
for(int i=0;i<=1;i++)
{
js.executeScript("arguments[0].value='"+Bandtermsvalue+i + "'", BrandTerms.get(i));
}
js=null;
driver.findElements(By.id("btnAddBrandedTerms")).click();

为什么将此webelement视为列表元素,并显示消息“类型类型为list的click()未定义”

enter image description here

2 个答案:

答案 0 :(得分:2)

或者,您可以提取并单击找到的第一个

List<WebElement> BrandTerms =driver.findElements(BrandTerm); 
js = (JavascriptExecutor) driver;
for(int i=0;i<=1;i++)
{
js.executeScript("arguments[0].value='"+Bandtermsvalue+i + "'", BrandTerms.get(i));
}
js=null;
driver.findElements(By.id("btnAddBrandedTerms")).get(0).click();

OR

driver.findElement(By.id("btnAddBrandedTerms")).click();

请参阅webdriver API规范 https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/remote/server/handler/FindElement.html

https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/remote/server/handler/FindElements.html

强烈建议再次检查selenium top tips and tricks,并在您的项目中进行尝试。

希望这会有所帮助。

答案 1 :(得分:0)

findElements返回与给定xpath匹配的所有元素的列表。而findElement使用xpath返回第一个匹配的元素。但是,要小心,好像没有元素匹配给定的xpath一样,您可能会遇到异常。

要解决您面临的问题,而不是下面的行:

driver.findElements(By.id("btnAddBrandedTerms")).click();

请使用以下代码行:

driver.findElement(By.id("btnAddBrandedTerms")).click();

希望有帮助。