访问列表的网络元素之后。其他网络元素也被视为“列表”网络元素。
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()未定义”
答案 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
强烈建议再次检查selenium top tips and tricks,并在您的项目中进行尝试。
希望这会有所帮助。
答案 1 :(得分:0)
findElements返回与给定xpath匹配的所有元素的列表。而findElement使用xpath返回第一个匹配的元素。但是,要小心,好像没有元素匹配给定的xpath一样,您可能会遇到异常。
要解决您面临的问题,而不是下面的行:
driver.findElements(By.id("btnAddBrandedTerms")).click();
请使用以下代码行:
driver.findElement(By.id("btnAddBrandedTerms")).click();
希望有帮助。