使用Selenium将图片固定到电路板

时间:2015-11-19 20:27:28

标签: java selenium

如果我没有以正确的方式发布内容,请原谅我,因为这是我在网站上发布的第一篇文章。我目前正在为我的学校制作一个爬虫(在java中),在pinterest访问某个页面并“重复”其上的所有照片。我目前正在使用Selenium对此进行编码,但我遇到了重复问题。我知道如何编程打开某个图像并重新打印它,但我如何为其他图片做同样的事情呢?我必须为各种pinterest页面执行此操作,每页都有可变数量的图片。这是我现在的相关代码:

public static void GetPageInfo(WebDriver driver) throws AWTException, InterruptedException { driver.get("https://www.pinterest.com/kachance33/school-psych/"); Thread.sleep(2000); driver.findElement(By.xpath("//div[2]/div/div/div[2]/div[3]/a/div[2]/div/div ")). click(); Thread.sleep(3000); driver.findElement(By.xpath("(//button[@type='button'])[23]")).click(); driver.findElement(By.xpath("(//button[@type='button'])[59]")).click(); }

为了帮助简化我的问题,这里是:

  1. 如何在每个xpath不同的各种图片上点击硒?
  2. 如何将这一切全部放入while循环?
  3. 如何处理未找到按钮或图片的异常? (没有整个程序崩溃并且必须重新启动)

1 个答案:

答案 0 :(得分:1)

基本思想是使用带有xpath或css选择器的driver.findElements()映射到图片列表(以WebElements的形式),并迭代它们。

List<WebElement> pictures = driver.findElements(By.cssSelector(".GridItems .item"));

for (WebElement picture : pictures) {
    // code to pin the picture
}

使用driver.findElements()也可以消除问题#3中的问题,因为该方法不会引发异常。如果没有找到图片,它只会返回一个空列表。