【问题标题】:Use protractor on an non angular page在非角度页面上使用量角器
【发布时间】:2016-05-19 16:55:29
【问题描述】:

在我最近的测试中,我需要先登录并在非角度页面上执行一些操作 (https://www.qa.dealertrack.com/default1.aspx) 然后切换到角度页面并完成测试。 在 conf 我有

global.driver = browser.driver;

我的页面对象如下所示:

                var LogInPage = function() {
                    this.loginUrl = 'https://www.qa.dealertrack.com/default1.aspx';
                    this.id = browser.driver.findElement(by.name('username'));
                    this.password = browser.driver.findElement(by.name('password'));
                    this.loginButton = browser.driver.findElement(by.name('login'));

                    this.logIn = function(id, password) {
                        // maximize window
                        driver.manage().window().maximize();
                        // log in
                        driver.get('https://www.qa.dealertrack.com/default1.aspx');
                        this.id.sendKeys(id);
                        this.password.sendKeys(password);
                        this.loginButton.click();
                    }
                };

我的测试看起来像:

                describe('Sample Test - Log In', function() {
                    var loginPage = require('../pages/LogInPage.js');

                    /**
                     * Disable waiting for AngularJS for none Angular page
                     */
                    beforeEach(function() {
                        isAngularSite(false);
                    });

                    it('logging in', function() {
                        loginPage.logIn('xxx', 'xxx');
                    })
                })

但是,即使在到达站点之前,量角器也会抛出错误 NoSuchElementError: no such element: Unable to locate element:{'method':'name','selector':'username'}

但是当我注释掉所有元素变量和相关行时,只剩下了

driver.get(this/loginUrl); 

成功了。为什么 browser.driver.get 可以工作,而 browser.driver.findElement 不行?

这是我在 Stackoverflow 上的第一个问题。谢谢大家!!

【问题讨论】:

标签: selenium-webdriver protractor


【解决方案1】:

登录前需要设置

browser.driver.ignoreSynchronization=true;

应该是这样的

browser.driver.ignoreSynchronization=true;
login();
browser.driver.ignoreSynchronization=false;

【讨论】:

    【解决方案2】:

    我试图删除我在页面对象中的函数之外声明的所有元素。取而代之的是,我只是对函数中的元素进行硬编码。它奏效了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-25
      • 1970-01-01
      相关资源
      最近更新 更多