当前位置: 首页 > 面试题库 >

selenium加载页面后获取当前URL

景正文
2023-03-14
问题内容

我在Java中使用Selenium Webdriver。我想在单击“下一步”按钮从第1页移至第2页后获得当前的url。这是我的代码:

    WebDriver driver = new FirefoxDriver();
    String startURL = //a starting url;
    String currentURL = null;
    WebDriverWait wait = new WebDriverWait(driver, 10);

    foo(driver,startURL);

    /* go to next page */
    if(driver.findElement(By.xpath("//*[@id='someID']")).isDisplayed()){
        driver.findElement(By.xpath("//*[@id='someID']")).click();  
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
        wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id='someID']")));
        currentURL = driver.getCurrentUrl();
        System.out.println(currentURL);
    }

我有隐式和显式的等待调用,以等待页面完全加载后再获得当前的url。但是,它仍在打印第1页的网址(应该是第2页的网址)。


问题答案:

就像您说的那样,因为下一个按钮的xpath在每个页面上都是相同的,所以它将不起作用。它按照编码的方式工作,它确实等待元素显示,但是由于已经显示了元素,因此隐式等待不再适用,因为它根本不需要等待。为什么不使用URL更改的事实,因为单击代码后,URL从您的代码看来会更改。我使用C#,但我想在Java中会是这样:

WebDriver driver = new FirefoxDriver();
String startURL = //a starting url;
String currentURL = null;
WebDriverWait wait = new WebDriverWait(driver, 10);

foo(driver,startURL);

/* go to next page */
if(driver.findElement(By.xpath("//*[@id='someID']")).isDisplayed()){
    String previousURL = driver.getCurrentUrl();
    driver.findElement(By.xpath("//*[@id='someID']")).click();  
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);

    ExpectedCondition e = new ExpectedCondition<Boolean>() {
          public Boolean apply(WebDriver d) {
            return (d.getCurrentUrl() != previousURL);
          }
        };

    wait.until(e);
    currentURL = driver.getCurrentUrl();
    System.out.println(currentURL);
}


 类似资料:
  • 问题内容: 我正在尝试获取当前打开页面的URL。我正在使用Selenium WebDriver和Java。 我正在通过以下方式访问当前URL: 但是,该URL似乎并未真正反映我当前所在的位置。 我当前的测试用例涉及到NYT网站,然后单击“技术”链接。但是,无论地址栏中显示的URL如何,始终显示为。 我如何实际访问地址栏中的URL值,以便知道实际在哪个页面上? 问题答案: 睡吧 它会工作。我努力了。

  • 我正在尝试获取当前打开页面的URL。我正在使用Selenium WebDriver和Java。 我正在通过以下方式访问当前URL: 然而,URL似乎并没有实际反映我当前的位置。 我如何实际访问地址栏中的URL值,这样我就可以知道我实际在哪个页面上了?

  • 返回当前页面URL。 使用 window.location.href 获取当前页面URL。 const currentURL = () => window.location.href; currentURL(); // 'https://google.com'

  • 我使用selenium获取网页,并发送kenword获取新页面。但是我怎样才能获得新的网页,并搜索我需要的信息呢 请原谅我没有使用降价。我的问题是:我想在搜索关键词后获得网页,但我编写了浏览器。page_源码,它是百度的主页

  • 当我运行以下代码时,执行会突然结束,除非我取消对Thread.sleep()的注释。因此,我在撤回url servlet中的代码不会被执行。单击是一个提交按钮单击,加载另一个页面。 让硒等到页面加载的正确方法是什么? 我正在使用以下selenium版本

  • 我使用Python 3和Selenium来自动化浏览器活动。在我正在工作的页面上,我有一个按钮,当点击时,它会加载一个下拉菜单。然而,在检查时,我相信下拉框是在点击按钮后生成的,因为我没有看到页面加载菜单的html。 我正在使用以下代码 html 这个菜单大概是通过JS加载的,我试图点击的按钮是文本帐户 这将加载网站,并单击下拉菜单。我在下拉菜单中看到按钮加载,我正试图让浏览器单击该按钮,但它从未