【问题标题】:Unable to Navigate to URL with Selenium Gecko WebDriver无法使用 Selenium Gecko WebDriver 导航到 URL
【发布时间】:2018-09-23 06:52:30
【问题描述】:

我今天遇到了一个有趣的错误。我已经使用 Selenium 多年了,在导航到 URL(通过driver.navigate().to(url))时从来没有遇到过问题,但是今天我试图导航到一个特定的 URL,我发现在多次执行该程序后它有时只是停留在原始页面而不导航到新页面。

有趣的是,这种情况只发生在大约 50% 的时间里,而且只有在导航到程序特定部分的特定 URL 时才会发生(在程序的其他部分,导航到这个 URL 没有问题)。

当前页面上的某些元素是否可能阻止 driver.navigate().to(url) 执行?

我查看了 thisthis 问题,但两者似乎都存在导航问题。就我而言,它有时有效,有时无效(即使使用完全相同的 url)。

我也没有收到任何具体的错误(所以我没有更多信息可以发布)。程序继续运行,就好像该语句不存在一样。

如有必要,我很乐意提供更多详细信息。

代码:

shoppingCartURL.navToShoppingCart(driver);

String[] XPath = { "//*[contains (@value,'Delete')]" };

List<WebElement> elementList = webElementX.getElementListByXPath(driver, XPath);

System.out.println("Deleting " + elementList.size() + " element(s) from shopping cart");

for (int elementListCounter = 0; elementListCounter < elementList.size(); elementListCounter++) {

    WebElement singleElement = elementList.get(elementListCounter);

    try {
        singleElement.click();
    } catch (Exception e) {

        System.out.println("Exception occurred (StaleElementReferenceException)");
    }

}

if (conditionX == false) {
    productPage.navToProductPage(driver, product); // this method is not always executed, program continues to execute productPage.performActionOnPage(driver); without navigating to 'product page'
    productPage.performActionOnPage(driver);
}




public void navToProductPage(WebDriver driver, String product)

{
   String URL = "https://www.example.com/product/" + product;
   System.out.println("Navigating to " + URL); // always prints the  correct url (but still doesn't always navigate to url as mentioned in question)
   driver.navigate().to(URL);

}

更新:

我注意到重定向网址中的ref=cart-ajax-error(从购物车中删除商品后)。显然,该网站在从购物车中删除商品后使用 AJAX 刷新页面。这可能与我尝试导航到另一个页面有冲突吗? 换句话说,Selenium 可能同时收到两条不同的消息。刷新页面并导航到新页面。所以它仍保留在当前页面上?

如果情况属实,有什么办法可以解决这个问题?

谢谢!

【问题讨论】:

  • 在描述中粘贴您的代码
  • 你在哪里声明product?我在示例中没有。有没有可能是某种东西毒化了价值?将其输出到控制台时不可见但作为 URL 无效的内容,因此无法导航。只是一个想法。
  • 你检查过 driver.get(URL) 吗?
  • MivaScott: 不,在 syso 到导航后 url 不会改变。 santhosh kumar:driver.get() 的工作方式与 driver.navigate.to(url) 基本相同,我已经用更多细节更新了问题

标签: java eclipse selenium selenium-webdriver geckodriver


【解决方案1】:

有时会发生有时不会发生,这几乎总是时间问题。

在导航到 URL 后向您的代码添加显式等待:

WebDriverWait wait = new WebDriverWait(driver, 20);
wait.until(ExpectedConditions.urlToBe(URL));

【讨论】:

  • 我试过这个但它只是导致selenium.TimeoutException: Expected condition failed(由于导航失败,它需要无限期地等待)
猜你喜欢
  • 2021-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-02
  • 1970-01-01
相关资源
最近更新 更多