当前位置: 首页 > 知识库问答 >
问题:

我正在获取StaleElementReferenceException。在以下情况下,如何解决此问题

邬浩涆
2023-03-14

'''System.SetProperty(“webdriver.chrome.driver”,“c://users//naqdaq//downloads//chromedriver_win32//chromedriver.exe”);WebDriver驱动程序=新ChromeDriver();

    driver.manage().window().maximize();
    driver.manage().deleteAllCookies();

    driver.manage().timeouts().pageLoadTimeout(40, TimeUnit.SECONDS);
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);

    driver.get("https://www.amazon.com");

    List<WebElement> linksList = driver.findElements(By.tagName("a"));
    linksList.addAll(driver.findElements(By.tagName("img")));

    System.out.println("The full size of Links and Images are: " + linksList.size());

    List<WebElement> activeLinks = new ArrayList<WebElement>();

    for(int i=0; i<linksList.size(); i++) {
        //System.out.println(linksList.get(i).getAttribute("href"));
        if(linksList.get(i).getAttribute("href") != null) {
            activeLinks.add(linksList.get(i));
        }
    }

    System.out.println("The active links and images are--->" + activeLinks.size());

'''

共有1个答案

蒋鹏鹍
2023-03-14

维沙尔,

试试下面的代码,它对我起作用了。

@Test(enabled = true)
public static void amazonActiveLinks() {

    // Browser Initializing
    System.setProperty("webdriver.gecko.driver", "C:\\Software\\geckodriver-v0.19.0-win64\\geckodriver.exe");

    driver = new FirefoxDriver();

    driver.manage().window().maximize();
    driver.manage().deleteAllCookies();

    driver.manage().timeouts().pageLoadTimeout(40, TimeUnit.SECONDS);
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);

    driver.get("https://www.amazon.com");

    List<WebElement> linksList = driver.findElements(By.tagName("img"));
    linksList.addAll(driver.findElements(By.tagName("a")));
    System.out.println("The full size of Links and Images are: " + linksList.size());

    String url;
    List<WebElement> activeLinks = new ArrayList<WebElement>();

    for (WebElement link : linksList) {
        url = link.getAttribute("href");
        if (url != null || url != "") {
            activeLinks.add(link);
        }
    }
    System.out.println("The active links and images are--->" + activeLinks.size());

}
 类似资料:
  • 在上述情况下,如果用户为空,则给出NPE。如何避免NPE?

  • 所以我制作了一个脚本,读取一堆文本文件(每首歌一个)作为歌词。它的工作原理是你输入一个歌词短语,然后脚本扫描所有可用文件中的歌词,并告诉你歌曲的名称。问题是斜杠不起作用。我更改了“/”和“\”之间的斜杠,但遇到了错误。 当我使用正斜杠时,我看到以下内容: “OSError:[Errno 22]无效参数:'C:/Users/[My Name]/Desktop/MusicLyricSearch/All

  • 这是我的建筑。格雷德尔: 我试图找出问题所在,使用以下代码来分析问题: 结果是:

  • 问题内容: 我正在尝试从mysql数据的foreach循环中调用所有值,并使用那里的值输入到另一个mysql select语句中。看下面我的代码。它只能收集一个值。我当时正在考虑使用第一个foreach循环包括整个部分,但是,因为foreach的值是独立的,因此我需要使用爆炸数组进行PDO准备。因此,最后,我想知道一种从外部foreach循环获取所有值的方法。欣赏。 问题答案: 如果您最后一个目的

  • 我在一个Spray应用程序中使用ask模式调用一个Actor,并将结果作为HTTP响应返回。我将故障从参与者映射到自定义错误代码。 当authActor发送一个失败时,这可以正常工作,但是如果authActor抛出一个异常,则在请求超时完成之前什么也不会发生。例如: 这样,如果它是预期的错误(即ServiceException),则通过创建一个失败来处理它。如果它是意外的,它会立即返回一个失败,以

  • 我在我的应用程序中使用CloudKit作为远程保存数据的一种方式。我的一个记录具有保存图像的CKAsset属性。当我获取记录时,我意识到完成查询要花很多时间。经过多次测试,我得出结论,当您查询记录时,CloutKit会用record对象下载整个资产文件。因此,当您从record对象获取资产并请求它的fileURL时,它会给您一个本地文件路径URL,而不是HTTP类型的URL。这对我来说是一个问题,