我想废弃一个网站并在 selenium 中获取所有带有标题的链接,但是一旦我从主页导航并返回,我就会遇到陈旧的元素问题
I want to scrap a website and get all links with title in selenium, but i got stale element issue once i navigated from home page and swtich back
我正在做一个 selenium 项目,将网页中的所有 link 都废弃并单击它,然后获取新闻的标题和描述。
我想为主页中的所有 link 执行此操作 - 例如 bbc.com
但是一旦我点击 link 并切换回来,主页就会刷新。
剩余的 links 显示为陈旧的元素问题。她是我的密码
任何帮助将不胜感激。
List<WebElement> allLinks = driver.findElements(By.tagName("a"));
for(int el = 0; el < allLinks.size(); el++) {
hrefs = allLinks.get(el).getAttribute("href");
try {
allLinks.get(el).click();
//newpage = driver.getWindowHandle();
try {
text = driver.findElement(By.xpath("*//div[contains(@class,'title-text')]")).getText();
description = driver.findElement(By.xpath("*//div[contains(@class,'title-text')]/ancestor::div[contains(@class,'title')]/following::h2[contains(@class,'subtitle')]")).getText();
noSwitch = false;
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println("Page not navigated");
}
} catch(StaleElementReferenceException e) {
System.out.println("Stale element issue");
text = allLinks.get(el).getText();
description = "No Description.";
}
System.out.println(hrefs + " - "+ text + " - " + description);
utility.setCellData("first sheet", rowcnt, 1, text);
utility.setCellData("first sheet", rowcnt, 2, hrefs);
utility.setCellData("first sheet", rowcnt, 3, description);
rowcnt++;
if(!noSwitch) {
driver.switchTo().window(homepage);
}
}
你必须回忆你的链接,所以像这样重新加载所有链接:
List<WebElement> allLinks = driver.findElements(By.tagName("a"));
for(int el = 0; el < allLinks.size(); el++) {
#add this line
allLinks = driver.findElements(By.tagName("a"));
我正在做一个 selenium 项目,将网页中的所有 link 都废弃并单击它,然后获取新闻的标题和描述。 我想为主页中的所有 link 执行此操作 - 例如 bbc.com 但是一旦我点击 link 并切换回来,主页就会刷新。 剩余的 links 显示为陈旧的元素问题。她是我的密码 任何帮助将不胜感激。
List<WebElement> allLinks = driver.findElements(By.tagName("a"));
for(int el = 0; el < allLinks.size(); el++) {
hrefs = allLinks.get(el).getAttribute("href");
try {
allLinks.get(el).click();
//newpage = driver.getWindowHandle();
try {
text = driver.findElement(By.xpath("*//div[contains(@class,'title-text')]")).getText();
description = driver.findElement(By.xpath("*//div[contains(@class,'title-text')]/ancestor::div[contains(@class,'title')]/following::h2[contains(@class,'subtitle')]")).getText();
noSwitch = false;
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println("Page not navigated");
}
} catch(StaleElementReferenceException e) {
System.out.println("Stale element issue");
text = allLinks.get(el).getText();
description = "No Description.";
}
System.out.println(hrefs + " - "+ text + " - " + description);
utility.setCellData("first sheet", rowcnt, 1, text);
utility.setCellData("first sheet", rowcnt, 2, hrefs);
utility.setCellData("first sheet", rowcnt, 3, description);
rowcnt++;
if(!noSwitch) {
driver.switchTo().window(homepage);
}
}
你必须回忆你的链接,所以像这样重新加载所有链接:
List<WebElement> allLinks = driver.findElements(By.tagName("a"));
for(int el = 0; el < allLinks.size(); el++) {
#add this line
allLinks = driver.findElements(By.tagName("a"));