gpt4 book ai didi

java - Selenium 不会通过 xpath 查找值大于 99 的元素

转载 作者:行者123 更新时间:2023-12-02 01:24:39 25 4
gpt4 key购买 nike

我正在尝试从网站获取特定的网络元素列表。所有这些元素都具有完全相同的 xpath,当然除了一个数字之外。当我尝试使用以下代码提取所有这些元素时,它工作得很好,除非列表包含超过 99 个项目。如果 xpath 中的数字高于 99,Selenium 将不会定位该元素,即使(我已经测试过)xpath 保持完全相同。

我已经尝试过挑出这些项目,但 Selenium 的作用就像第 100 个项目,而以上所有项目都不存在。

我挑选出以下代码(简化):

String xpath="/html/body/div[1]/div/div[4]/div[2]/div[1]/div/div/div/div/section/div/div/div[2]/section/ol/div[%d]/div/li/div[2]/div/div[1]"; 

private void getTextFromElements(WebDriver driver){
for(int i=0; i<200; i++){
if(driver.findElements(By.xpath(String.format(xpath, i)).size()!=0){
System.out.println(driver.findElement(By.xpath(String.format(xpath, i))).getText());
}else{
break;
}
}
}

虽然它完美地打印出前 99 个元素,但它会抛出异常,即 Selenium 在到达第 100 个元素时无法立即找到该元素。

这是一个示例 URL,我尝试从中提取数据:link .

最佳答案

当我检查您的代码时,它有默认的最大限制。因此,到达 99 后,您必须向下滚动一次。请参阅我从您的网络中提取的附件。您只能捕获网页中可用的元素。元素的其余部分将在您向下滚动选项时显示。您的列表中共有 209 个项目,但您无法获取它们,因为它们目前不可见。

enter image description here

向下滚动

WebDriver driver = new ChromeDriver();
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("window.scrollBy(0, 250)", "");

请引用Scroll Element into View with Selenium

关于java - Selenium 不会通过 xpath 查找值大于 99 的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57117730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com