【问题标题】:Why am I getting the previous tabs url?为什么我得到以前的标签网址?
【发布时间】:2023-03-17 05:04:02
【问题描述】:

我正在尝试通过单击 ID 为“wrpr_1431108056877h”的元素来获取打开的窗口的 URL。新窗口打开,但 getTitle() 仍返回原始选项卡的标题。在 Browserstack 提供的视频中,我能够验证当前选项卡确实是我要访问的选项卡。

browser
    .click('#wrpr_1431108056877h')
    .pause(5000)
    .getTitle()
    .then((url: any) => {
        console.log(url);
    })
    .end()
    .catch((err: any) => {
      console.log(err.message);
      done(Error('Could not move'));
    });

【问题讨论】:

    标签: node.js selenium webdriver-io


    【解决方案1】:

    browser.getTabIds();

    应该给你一个 webdriver 知道的所有窗口句柄的列表。

    那么你可以使用

    browser.getCurrentTabId();

    找出当前焦点所在的窗口(也许这就是您在 BrowserStack 视频中所说的操作?)

    我的猜测是新打开的窗口不是当前聚焦的窗口。因此,任何执行的命令(如getTitle())都将发生在前一个窗口中。

    您可以通过调用将焦点窗口切换到新打开的窗口

    browser.switchTab(windowHandle)

    然后您可以调用getTitle(),它应该会返回正确的标题。

    在此处查看 Window 上的 Web 驱动程序文档:http://webdriver.io/api/window/getTabIds.html

    (将左侧全部向下滚动以查看完整的窗口部分)

    了解更多信息。

    【讨论】:

    • 感谢您的回复,但我已经尝试过了,但没有任何作用。
    【解决方案2】:

    请致电

     browser.navigate().refresh()
    

    打电话之前

     browser.gettitle().
    

    【讨论】:

    • 马哈茂德,你读过这个问题吗?! :) 你说的可能是 WebdriverJS,不是 WebdriverIO... 亲戚,而是不同的野兽。
    • @iamdanchiv 我写了相关代码。你可以在 webdriverio 上应用这个逻辑。逻辑是在获取标题方法之前调用导航刷新类型方法
    • 是的,但是,询问的人可能会感到困惑,特别是如果他不知道正在访问的服务器端点以获得相应的信息。此外,他的用例是获得一个新打开的窗口的标题,而 WDIO 以不同的方式处理它。
    • @iamdanchiv 是的,我知道,但是对于 wdio,在导航到新页面并立即调用 get title 方法后,您肯定会获得以前的 url 标题。因此为避免在导航到新页面后发生这种情况,然后调用驱动程序 url 刷新方法解决问题。请试试这个。
    • @MahmudRiad 我已经修改了我的承诺链看起来像这样client .click('#wrpr_1431108056877h') .refresh() .pause(3000) .getUrl() .then((url: any) => { console.log(url); }),但我仍然得到相同的结果。这是您和@iamdanchiv 建议的正确实施吗?
    猜你喜欢
    • 2014-06-27
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 2014-07-06
    • 2014-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多