我不熟悉量角器,所以请多包涵。
看到这个问题问了很多次,但是提出的解决方案都不适合我。我测试中的应用程序在一个没有角度的登录页面上启动。我设置browser . ignoresynchronization = true,登录,设置回false,重新加载页面。然后,我尝试与结果页面上的元素进行交互。第一个元素没有问题,但是试图找到第二个元素会抛出一个类型错误
"失败:等待量角器与页面同步11秒后超时,无法分配给只读属性' stack'。请在等待带有定位器的元素时查看https://github . com/angular/量角器/blob/master/docs/FAQ . MD-Locator:[有效定位器]"
我可以通过将ignoreSychronization设置为true并使用sleeps来实现它,但这难道不会破坏使用量角器的全部目的吗?!我可以使用java硒,我已经精通了。
我确信页面正在加载,并且没有未完成的http、超时或其他调用。为了确保万无一失,我将超时设置为2分钟,结果是一样的。
我的测试看起来像这样:
describe('this does not work', function() {
beforeEach(function() {
// log in on non-angular page
// ignoreSynchronization because this isn't an angular page
browser.ignoreSynchronization = true;
var d = browser.driver;
d.get(g.url);
var username_field = d.findElement([valid locator]);
username_field.sendKeys(username);
var next_button = d.findElement([valid locator]);
next_button.click();
var password_field = d.findElement([valid locator]);
password_field.sendKeys(password);
var login_button = d.findElement([valid locator]);
login_button.click();
// done with non-angular page
browser.ignoreSynchronization = false;
browser.get(g.url);
});
it('does not work', function() {
// if you comment out this line, the next will execute successfully
// this succeeds, so page is loaded
expect(element([valid locator]).getText()).toBe('some string');
// otherwise, the exception is thrown trying to get this element
element([valid locator]).click();
element([valid locator]).click();
});
});
欢迎任何帮助/指点/建议。
编辑:我应该包括我的conf.js:
exports.config = {
framework: 'jasmine',
seleniumAddress: 'http://localhost:4444/wd/hub',
specs: ['./specs/**/broken_spec.js'],
useAllAngular2AppRoots: true
}
经过一夜的思考(是的,我在量角器里做梦),我意识到恰当地使用promise可能是答案。我在如何等待条件中找到了一些非常有用的提示?,并将我的测试实现为:
describe('this does not work', function() {
beforeEach(function() {
// log in on non-angular page
// ignoreSynchronization because this isn't an angular page
browser.ignoreSynchronization = true;
[login]
// done with non-angular page
browser.ignoreSynchronization = false;
browser.get(g.url);
});
it('should work', function() {
// log out
var userInfoButton = [valid locator];
browser.driver.isElementPresent(userInfoButton).then(function() {
browser.driver.findElement(userInfoButton).then(function(button) {
button.click();
var logoutButton = [valid locator];
browser.driver.isElementPresent(logoutButton).then(function() {
browser.driver.findElement(logoutButton).then(function(button) {
button.click();
});
});
});
});
});
});
问题内容: 我正在测试AngularJS应用程序,并且对量角器非常新。每次我打开浏览器时,它都会打开,然后等待超时,然后在cmd上引发以下错误。 我尝试增加超时限制,但始终会收到此错误。我也尝试过使用所有这些: 该页面正确加载,并且如果我使用Eclipse和Selenium与按钮对象进行交互,则可以正常工作。 只有量角器出现同步问题。请帮忙。 问题答案: 量角器超时的可能原因: 您的网页未以预期的
问题内容: 我正在使用小型AngularJS应用测试量角器。 这是测试: 控制器: 草稿服务: 使用量角器运行此测试会导致以下错误: 但是,如果在控制器中更改此行: 对此: 测试失败,但未达到预期目的,但更重要的是:它不会超时。 启用query()时,在浏览器中手动运行应用程序以及查看Protractor打开的浏览器窗口时,转发器均会正确显示API返回的数据。 当服务与API通信时,为什么Prot
运行protactor时,出现以下错误:
问题内容: 我的档案是: 我的节点项目在9001端口上运行并在监听。 我的测试是: 我得到的错误是: 我究竟做错了什么?? 问题答案: (非常简短的版本): 使用代替。 较长的版本: Protractor基本上是Selenium及其Javascript WebDriver代码的包装。量角器添加代码以等待Angular“安顿下来”(即完成$ digest循环),然后继续测试代码。但是,如果您的页面上
我试过下面的方法,但效果不理想。
我试图遵循量角器官方网站上的量角器教程,但我甚至无法完成步骤0。 我在用量角器 之后,我一直在遵循教程的第0步。我有配置。js文件和test-spec.js文件如下: 配置js公司 测试规范js 当我运行protector
我正在使用Selenium.WaitForPageToload方法在启用ajax的网页中等待。当我运行测试代码时,selenium甚至在页面加载后仍会等待,并抛出“等待操作完成超时”异常。我可能在甚至没有页面加载事件的地方使用了waitforpagetoload。我想它只是跳过部分,如果页面加载。我的代码是这样的 我使用的是Selenium-Java2.33版。google Chrome 27.0
我们使用SeleniumQuery-0.19.0进行硒测试。 我们注意到$.url()没有等待页面完全加载。我还尝试了$.driver().get().navigate().to(url);。 null > 等待,即$(“*[id='login.username']”).WaitUntil(5000).IsPresent(); 超时,即$.driver().get().manage().timeo