在窗口之间切换Selenium Webdriver Internet Explorer

Switch between windows Selenium Webdriver Internet Explorer

本文关键字:Webdriver Internet Explorer Selenium 窗口 之间      更新时间:2023-09-26

我有一个web应用程序,当它加载时会创建一个新页面来加载内容,我正在使用selenium尝试为web应用程序创建一些测试,但无法切换到新创建的网页,我正在使用JavaScript和mocha创建这些测试,下面是我当前的代码,

    var assert = require('assert'),
    test = require('selenium-webdriver/testing'),
    webdriver = require('selenium-webdriver');
    var driver = new webdriver.Builder().withCapabilities(webdriver.Capabilities.ie()).build();
    test.describe('open Page', function() {
      this.timeout(15000); //Set timeout to 15000ms
      test.it('load page', function(done) {
        var status=driver.get('http://localhost:58080/TC1');
        assert.equal(status,status);
        done();
      });
    });
    test.describe('title', function() {
    test.it('get page title',function() {
      console.log(driver.getWindowHandle().size);
      var title = driver.title;
      console.log("Title of the page before - switchingTo: " + title);
      assert.equal(title,'TC1');
    });
});

但每次我都会出现以下的错误

打开页面V加载页面(3702ms)

title未定义切换前页面的标题To:未定义1) 获取页面标题

1次通过(4s)1次失败

1) title获取页面标题:断言错误:未定义==='[TC1]'

我是不是错过了什么重要的东西?

没有driver.title这样的东西。你必须使用driver.getTitle()。例如:

driver.getTitle().then(function (title) {
    assert.equal(title, 'TC1');
});

请注意,如果使用通过Selenium提供的测试函数,则不必使用done。Selenium对it进行修补,以便等待控制流。

此外,这也没有意义:

var status=driver.get('http://localhost:58080/TC1');
assert.equal(status,status);

driver.get的返回值不是状态,它是一个promise。检验承诺本身是平等的是没有用的。