我想从页面中选择一个随机链接。我添加了一个警报,以查看元素是否存在。该页面给出了'a is shows'警告,但我在eclipse上遇到以下错误:元素目前不可见,因此可能无法与进行交互
以下是代码:
String tag = "a";
boolean tagChk = driver.findElement(By.tagName(tag)).isDisplayed();
if(tagChk == true){
JOptionPane.showMessageDialog(null, tag +" is displayed");
System.out.println(tag +" is displayed");
List<WebElement> links = driver.findElements(By.tagName(tag));
WebElement randomElement = links.get(r.nextInt(links.size()));
//JOptionPane.showMessageDialog(null, "Random link clicked");
randomElement.click();
}
else
JOptionPane.showMessageDialog(null, tag +" is not displayed");
我已经检查了这些问题中最着名的答案,但似乎都没有。
答案 0 :(得分:0)
检查link元素的可见性时,结果仅应用于页面上的第一个链接元素。
boolean tagChk = driver.findElement(By.tagName(tag)).isDisplayed();
当您使用findElements获取链接列表时,您将获得所有链接(可见且不可见)。
List<WebElement> links = driver.findElements(By.tagName(tag));
因此很可能randomElement不可见。
似乎你应该首先获得可见链接列表:
String tag = "a";
List<WebElement> links = driver.findElements(By.tagName(tag));
List<WebElement> visibleLinks = new ArrayList<WebElement>();
for (WebElement link : links){
if(link.isDisplayed())
visibleLinks.add(link);
}
boolean tagChk = visibleLinks.size()>0;
if(tagChk == true){
JOptionPane.showMessageDialog(null, tag +" is displayed");
System.out.println(tag +" is displayed");
WebElement randomElement=visibleLinks.get(r.nextInt(visibleLinks.size()));
//JOptionPane.showMessageDialog(null, "Random link clicked");
randomElement.click();
}
else
JOptionPane.showMessageDialog(null, tag +" is not displayed");