我正在尝试自动化 Google 图片页面:
所有图像都有相同的类但没有 id,结果不断变化。所以我希望能够根据索引点击图片。
我知道如何在 C# 中执行...但我不知道如何在 Java 中指定索引。当我尝试选择一个超过 0 的索引时,出现 IndexOutOfBounds 错误,但我不知道为什么
WebElement image = chromeDriver.findElement(By.className("rg_di"));
WebElement imageLink = image.findElements(By.tagName("a")).get(1);
imageLink.click();
这是我使用的整个代码...任何帮助将不胜感激:
System.setProperty("webdriver.chrome.driver", "/Users/user/chromedriver");
WebDriver chromeDriver = new ChromeDriver();
chromeDriver.get("http://www.google.com");
WebElement searchBox = chromeDriver.findElement(By.id("gbqfq"));
searchBox.sendKeys("pluralsight");
searchBox.sendKeys(Keys.RETURN);
chromeDriver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
WebElement imagesLink = chromeDriver.findElement(By.linkText("Images"));
imagesLink.click();
WebElement image = chromeDriver.findElement(By.className("rg_di"));
WebElement imageLink = image.findElements(By.tagName("a")).get(1);
imageLink.click();
任何帮助将不胜感激
最佳答案
在您的代码中:
WebElement image = chromeDriver.findElement(By.className("rg_di"));
将返回在页面上找到的第一个类为“rg_di”的元素。
那个元素只有一个<a href=... /a>
标签在里面。
您收到 IndexOutOfBounds 异常,因为您要求第二个(基于零的索引)。如果您将最终 WebElement 更改为:
WebElement imageLink = image.findElements(By.tagName("a")).get(0);
只要稍作改动,代码就可以正常工作。
这是我的快速版本(注意缺少存储元素,我只需要用 WebElements 做一件事):
public static void main(String[] args) {
// I don't have Chrome installed >.<
WebDriver driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("http://www.google.com");
WebElement searchBox = driver.findElement(By.id("gbqfq"));
searchBox.sendKeys("pluralsight");
searchBox.sendKeys(Keys.RETURN);
driver.findElement(By.linkText("Images")).click();
WebElement image = driver.findElement(By.className("rg_di"));
image.findElements(By.tagName("a")).get(0).click();
// super-shortened version:
// driver.findElement(By.className("rg_di")).findElements(By.tagName("a")).get(0).click();
}
关于java - 如何在 selenium webdriver for java 中通过索引查找元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27208872/