【问题标题】:How to access to non unique subclass of every element during iteration with Selenium?如何在使用 Selenium 迭代期间访问每个元素的非唯一子类?
【发布时间】:2021-11-04 10:13:40
【问题描述】:

我正在使用每个元素的 XPath 遍历网站上的元素。

//*[@id="app"]/div[1]/main/div[2]/section/div/section/div[4]/div[1]/div[X]

X values: 来自1 to n。其中 X 是元素的序数。

xpath.getText() 给我当前商品的名称和价格。 我也想下载图片。图像的类名不是唯一的。每个元素都一样:“shop-card__image-block”。

如何访问每个元素的“shop-card__image-block”?我想获取图片的链接并下载图片的名称和价格。

查看图片。

First image

Second image

【问题讨论】:

  • 请提供足够的代码,以便其他人更好地理解或重现问题。

标签: java selenium selenium-webdriver


【解决方案1】:

使用element.findElement(By by)element.findElements(By by) 获取子元素。见https://www.tutorialspoint.com/locating-child-nodes-of-webelements-in-selenium

【讨论】:

    【解决方案2】:

    代码:

    WebDriverWait wait = new WebDriverWait(driver, 30);
    int divSize = driver.findElements(By.xpath("//*[@id='app']/div[1]/main/div[2]/section/div/section/div[4]/div[1]/div")).size();
    
    for (int i = 1; i<= divSize; i++) {
        WebElement parentDiv = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id='app']/div[1]/main/div[2]/section/div/section/div[4]/div[1]/div['"+i+"']")));
        WebElement image = parentDiv.findElement(By.xpath(".//descendant::div[contains(@class,'shop-card__image-block')]"));
        
        // now image is a web element, you can perform a click on it like image.click(); or any other operation. 
    }
    

    现在图片是一个网络元素,你可以像image.click();一样点击它或任何其他操作。

    相信这会有所帮助。

    【讨论】:

    • 我已经这样做了:private By slika = By.tagName("img"); var linkSLike = driver.findElement(By.xpath("//*[@id=\"app\"]/div[1]/main/div[2]/section/div/section/div[3]/div[1]/div["+i+"]")).findElement(slika).getAttribute("data-src"); 无论如何谢谢
    • 好吧,我没有意识到这一点。由于您的帖子没有任何注释/评论。无论如何,很高兴你能成功。
    猜你喜欢
    • 1970-01-01
    • 2013-11-23
    • 2017-01-13
    • 2013-01-05
    • 2013-05-26
    • 2012-01-23
    • 2021-09-17
    • 1970-01-01
    • 2021-01-30
    相关资源
    最近更新 更多