【问题标题】:switchTab() cannot make the tab as currentTab in WebdriverIO standalone modeswitchTab() 无法在 WebdriverIO 独立模式下将选项卡设置为 currentTab
【发布时间】:2018-02-24 17:39:40
【问题描述】:

带有 selenium 独立服务器的 webdriverio,没有 wdio。

单击链接以打开新选项卡。 我可以看到新标签打开了,但是新标签上找不到任何元素,好像新标签从未存在过一样。

第一个标签和新标签的标题:

C:\Users\...\test>node switchtab.js
main window: CDwindow-(D77C1A0428E3E5717A1DF2473274B905)
Title is: WebdriverIO - WebDriver bindings for Node.js
new window: CDwindow-(D77C1A0428E3E5717A1DF2473274B905)
Title is: WebdriverIO - WebDriver bindings for Node.js
switchTab: CDwindow-(BE8C6F13723E588E3E39C7C21C02C290)
current window: CDwindow-(D77C1A0428E3E5717A1DF2473274B905)
Title is: WebdriverIO - WebDriver bindings for Node.js

如您所见,它总是获取第一个标签 ID。因此无法找到新选项卡上的任何元素。

我做错了什么?如何将新标签设为当前标签?即使我看到新标签成为活动标签,但显然代码不这么认为。

这里是示例代码sn-p:

var webdriverio = require('webdriverio');
var options = { desiredCapabilities: { browserName: 'chrome' } };
var client = webdriverio.remote(options);
var mainW, newW, newW1;

client
    .init()
    .url('http://webdriver.io/')

    .getCurrentTabId().then(function (handle) {
        mainW = handle;
        console.log('main window: ' + mainW);
    })
    .getTitle().then(function(title) {
        console.log('Title is: ' + title);
    })  

    .waitForExist('a[href="http://try.learnwebdriverio.com"]')
    .click('a[href="http://try.learnwebdriverio.com"]')
    .pause(5000)

    .getCurrentTabId().then(function (handle) {
        newW = handle;
        console.log('new window: ' + newW);
    })
    .getTitle().then(function(title) {
        console.log('Title is: ' + title);
    })  

    .getTabIds().then(function (handle) {
        console.log('switchTab: ' + handle[1]);
        newW1 = handle[1];
    })

    .switchTab(newW1)
    .pause(5000)
    .getCurrentTabId().then(function (handle) {
        console.log('current window: ' + handle);
    })
    .getTitle().then(function(title) {
        console.log('Title is: ' + title);
    .end();

switchTab() 无济于事。在.switchTab(newW1) 之后,它仍然获得第一个选项卡。更糟糕的是,我看到它实际上会切换到第一个标签。

【问题讨论】:

  • 您是否尝试过使用webdriver.io/api/window/switchTab.html手动切换到新标签?
  • 我确实想尝试,但我无法获得它的标签 ID。当我使用不带参数的 .switchTab() 时,它会切换回第一个选项卡。
  • 当您调用getTabIds() 时,您确定新标签位于索引1 处吗?您可能需要遍历列表并选择不等于当前选项卡的那个。
  • 是的,我确定,因为索引 0 与第一个选项卡相同,并且只有 2 个选项卡。所以它必须是索引 1。

标签: selenium-chromedriver webdriver-io


【解决方案1】:

它通过使用 Testrunner 工作(使用 mocha,我认为其他框架也一样)。我看到的独立模式和 Testrunner 模式之间的唯一区别是:

与使用独立模式不同,由 wdio 测试运行器执行的所有命令都是同步的。

因此,它应该与同步有关,而单机模式无法正确处理。

请注意,在 Testrunner 模式下,单击链接后新选项卡也不是当前的。您必须手动 switchTab() 将新选项卡设置为当前选项卡。

【讨论】:

    猜你喜欢
    • 2018-04-20
    • 2012-09-22
    • 1970-01-01
    • 2019-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多