gpt4 book ai didi

javascript - 使用 Protractor 测试非 Angular 网站

转载 作者:太空宇宙 更新时间:2023-11-04 16:27:21 25 4
gpt4 key购买 nike

我正在尝试通过 Protractor 测试我的网站,这是一个非 Angular 网站。我的代码是:

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"])

但是该元素存在于网站上。

请告诉我我做错了什么

最佳答案

由于您正在非 Angular 站点上工作并使用 browser.ignoreSynchronization = true,Protractor 将不会等待 Angular 变量变得可用,因此它会启动关闭测试,因为它认为应用程序已准备就绪,更多信息 here .

您需要操纵 Control Flow通过使用 Expected Conditions所以 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);

再次强调,这些都是隐式等待,它们将等待所提供的时间参数的最大值。这不是保证等待的时间,当它们找到您告诉它等待的元素时,它们会尽快启动。

关于javascript - 使用 Protractor 测试非 Angular 网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40104365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com