我正在尝试通过自动化amazon.in来学习硒 我想点击一个电子地点的动态图像。似乎没有课程或身份证明。那我该怎么办?
WebDriver driver= new FirefoxDriver();
@Test
public void test() {
driver.get("http://amazon.in");
driver.manage().window().maximize();
WebElement menu = driver.findElement(By.xpath("//li[@id='nav_cat_2']"));
Actions builder = new Actions(driver);
builder.moveToElement(menu).build().perform();
WebDriverWait wait = new WebDriverWait(driver, 5);
wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//a[@class='nav_a nav_item' and .=\"All Books\"]")));
WebElement menuOption = driver.findElement(By.xpath("//a[@class='nav_a nav_item' and .=\"All Books\"]"));
menuOption.click();
我已到达页面。但不知道如何继续。
URL
http://www.amazon.in/Books/b/ref=nav_shopall_books_all/280-9259056-7717210?_encoding=UTF8&node=976389031
答案 0 :(得分:1)
正如我所看到的,图像正在滚动,所以只需先等待相关图像再点击它。我添加了一个代码:
wait = new WebDriverWait(driver,60);
wait.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath("//div[@class='acsux-hero-wrap']//li[2]//img")));
WebElement ele = driver.findElement(By.xpath("//div[@class='acsux-hero-wrap']//li[2]//img"));
ele.click();
在上面的代码中,驱动程序等待直到第二个图像的可见度低于60秒。然后,它会点击该元素。
同样,您只需将数字 li [2] 替换为第一个元素的“li [1]”, li [4] “对于第四个元素,依此类推。
答案 1 :(得分:0)
使用其他属性,例如width或alt
// img [contains(@ alt,'Children')]
我能够点击屏幕截图中显示的突出显示的图像,虽然它是一个不同的关键字图像我认为你需要一些该图像的粘合属性,无论其内容如何都可以点击它。这就像知道确切的div img标签一样等等。
希望这会有所帮助