使用量角器测试一个无角网站

Testing a non angular website using Protractor

本文关键字:一个 网站 量角器 测试      更新时间:2023-09-26

我正试图通过量角器测试我的网站,这是一个非角度的网站。我的代码是:

describe("Supplier Portal: Login ", function () {
    //ui.setSmallScreenSize();
    // ui.testLogger(100);
    it("test", co.wrap(function* () {
         browser.ignoreSynchronization = true;
        yield browser.driver.get("https://cit.supplier.ext.here.com/");
        yield element(by.xpath("//*[@id='"rnav'"]/li[2]/a")).click();
       var elmOK = element(by.xpath( "//*[@id='"sign-in-email'"]"));
       browser.driver.wait(protractor.until.elementIsVisible(elmOK.getWebElement()))
    }));
}); 

但是当我尝试执行代码时,我得到了以下错误:

Failed: No element found using locator: By(xpath, //*[@id="sign-in-email"])

但是元素已经在网站上了

请告诉我哪里做错了

因为你是在一个无角的网站上工作,并且使用browser.ignoreSynchronization = true, Protractor不会等待angular变量可用,所以它开始启动测试,因为它认为应用程序已经准备好了,更多信息在这里。

您需要通过使用预期条件来操作控制流,以便Protractor知道它正在等待某些东西。这将使您的测试更加一致和可靠。

几个例子来指导你:

等待一个元素被加载/出现在DOM中:

var EC = protractor.ExpectedConditions;
var ele = element(by.css('div.class'));
browser.wait(EC.presenceOf(ele), 5000);

我传入的5000参数值表示等待最大 5秒,如果5秒内没有出现则失败。

等待一个可见元素:

browser.wait(EC.visibilityOf(ele), 5000);

等待一个元素可以点击:

browser.wait(EC.elementToBeClickable(ele), 5000);
同样,重要的是要注意这些是隐式等待,它们将等待所提供的时间参数的最大值。等待的时间没有保证,当它们找到你让它等待的元素时,它们会尽快启动。