Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 量角器等待页面完全加载_Javascript_Node.js_Angular_Jasmine_Protractor - Fatal编程技术网

Javascript 量角器等待页面完全加载

Javascript 量角器等待页面完全加载,javascript,node.js,angular,jasmine,protractor,Javascript,Node.js,Angular,Jasmine,Protractor,在转到之后,我试图单击教程下的“0-引导”,但量角器没有等待页面完全加载,因此我得到一个错误 失败:无法读取未定义的属性“单击” 我尝试使用手动方式等待页面加载 browser.driver.sleep10000 但我还是犯了同样的错误 conf.js exports.config = { // seleniumAddress: 'http://localhost:4444/wd/hub', getPageTimeout : 12000000, capabilities: { 'brow

在转到之后,我试图单击教程下的“0-引导”,但量角器没有等待页面完全加载,因此我得到一个错误

失败:无法读取未定义的属性“单击”

我尝试使用手动方式等待页面加载

browser.driver.sleep10000

但我还是犯了同样的错误

conf.js

exports.config = {
// seleniumAddress: 'http://localhost:4444/wd/hub',
getPageTimeout : 12000000,
capabilities: {
    'browserName': 'chrome'
},
specs: ['todo-spec.js'],
jasmineNodeOpts: {
    showColors: true,
    defaultTimeoutInterval: 1440000,
}
};
todo-spec.js

describe('angularjs homepage', function () {
it('should greet the named user', function () {
    var dropdown = element.all(by.css('.dropdown')).first(),
        dropdownToggle = dropdown.element(by.css('.dropdown-toggle')),
        dropdownMenu = dropdown.element(by.css('.dropdown-menu')),
        menuItem = dropdownMenu.all(by.tagName('li')).first();

    browser.get('http://www.angularjs.org');
    dropdownToggle.click();
    menuItem.click();

    expect(browser.getCurrentUrl()).toEqual('https://docs.angularjs.org/tutorial');
    //waiting 10 seconds for the page to fully load
    browser.driver.sleep(10000);
    browser.waitForAngular();
});
it('', async function () {

    /*  tried waiting for the element to be present
    var EC = protractor.ExpectedConditions;
    var e = element.all(by.css('.nav-index-listing'))[0];
    browser.wait(EC.presenceOf(e), 10000);

    Failed: Cannot read property 'isPresent' of undefined
    */

    //clicking '0 - Bootstrapping' under Tutorial
    element.all(by.css('.nav-index-listing'))[0].click();
    expect(element(by.cssContainingText('.pln', 'npm install')).isEnabled()).toBe(true);
    // Failed: Cannot read property 'click' of undefined

});
});
编辑 取代

element.all(by.css('.nav-index-listing'))[0].click();
    expect(element(by.cssContainingText('.pln', 'npm install')).isEnabled()).toBe(true);

我犯了一个错误

失败:等待在5001ms后超时

如果我删除浏览器。请稍候,我将

预计将相等

首先,不需要browser.driver.sleep10000。对于页面加载,可以使用dragrator.ExpectedConditions。如果页面已经加载,它将减少不必要的等待10秒

其次,代码中有一个小错误,这是问题的根本原因

换行

element.all(by.css('.nav-index-listing'))[0].click();
对此

 element.all(by.css('.nav-index-listing')).get(0).click();
更新:

element.allby.css“.nav index list”将只提供通过测试的li元素。但是单击它,将不会引导您进入所需页面。 将其更改为:

element.all(by.css('.nav-index-listing a')).get(0).click();  
在这种情况下,[0]将不起作用,因为返回的值不是数组。它是ElementArrayFinder类型。所以,这就是为什么需要.get0

如果您在测试中也检查以下条件,会更好

browser.wait(EC.urlIs("https://docs.angularjs.org/tutorial/step_00"), 5000);    
expect(browser.getCurrentUrl()).toEqual('https://docs.angularjs.org/tutorial/step_00');  
这些条件检查您当前的URL是否正确https://docs.angularjs.org/tutorial/step_00 或者不是

首先,不需要browser.driver.sleep10000。对于页面加载,可以使用dragrator.ExpectedConditions。如果页面已经加载,它将减少不必要的等待10秒

其次,代码中有一个小错误,这是问题的根本原因

换行

element.all(by.css('.nav-index-listing'))[0].click();
对此

 element.all(by.css('.nav-index-listing')).get(0).click();
更新:

element.allby.css“.nav index list”将只提供通过测试的li元素。但是单击它,将不会引导您进入所需页面。 将其更改为:

element.all(by.css('.nav-index-listing a')).get(0).click();  
在这种情况下,[0]将不起作用,因为返回的值不是数组。它是ElementArrayFinder类型。所以,这就是为什么需要.get0

如果您在测试中也检查以下条件,会更好

browser.wait(EC.urlIs("https://docs.angularjs.org/tutorial/step_00"), 5000);    
expect(browser.getCurrentUrl()).toEqual('https://docs.angularjs.org/tutorial/step_00');  
这些条件检查您当前的URL是否正确https://docs.angularjs.org/tutorial/step_00 或者不是

尝试使用waitForAngualarEnabledtrue而不是expected wait,这会使量角器等待直到加载所有角度元素,并在测试的每一行中添加wait。 否决票 接受

尝试使用waitForAngualarEnabledtrue而不是预期的等待,这会使量角器等待,直到加载所有角度元素,并在测试的每一行中添加等待。 否决票
接受

哇,非常感谢。我将[0]改为.get0,它确实有效,即使没有等待之类的东西。但请您解释一下为什么它与.get0一起工作而不是与[0]一起工作,因为我认为.get0和[0]只是做同样事情的两种方法从数组中获取第一个元素。@KedelMihail我更新了解决方案,以回答您的问题。以及提供一些可能对您有所帮助的其他反馈。当我使用browser.waitEC.urlI时shttps://docs.angularjs.org/tutorial/step_00,5000 I get-失败:等待在之后超时1002ms@KedelMihail此错误适用于不同的语句。上面写着失败:等待在1002ms后超时。这意味着您的代码中还有一个browser.wait语句,您提到1000毫秒是超时,但失败了。哇,非常感谢。我将[0]改为.get0,它确实有效,即使没有等待之类的东西。但请您解释一下为什么它与.get0一起工作而不是与[0]一起工作,因为我认为.get0和[0]只是做同样事情的两种方法从数组中获取第一个元素。@KedelMihail我更新了解决方案,以回答您的问题。以及提供一些可能对您有所帮助的其他反馈。当我使用browser.waitEC.urlI时shttps://docs.angularjs.org/tutorial/step_00,5000 I get-失败:等待在之后超时1002ms@KedelMihail此错误适用于不同的语句。上面写着失败:等待在1002ms后超时。这意味着您的代码中还有1个browser.wait语句,其中您提到1000毫秒为超时,但失败了。请阅读解决方案,它提到使用元素.allby.css'.nav index listing a'.get0.click;而不是element.allby.css.nav index list.get0.click;。您还必须在选择器中提到a标记。问题解决了吗?如果是,那么请接受解决方案。请阅读解决方案,其中提到使用element.allby.css'.nav index listing a'.get0.click;而不是element.allby.css.nav index list.get0.click;。您还必须在选择器中提到a标记。问题解决了吗?如果是,请接受该解决方案。默认情况下,waitForAngularEnabled处于启用状态,并且每次执行webdrive操作(如getCurrentUrl或单击)时都会调用它:waitForAngularEnabled在默认情况下处于启用状态,并在每次调用时调用 执行webdrive操作,如getCurrentUrl或单击: