找不到使用定位器的元素:By(css selector,* [id =" more"])

时间:2018-01-06 10:34:47

标签: protractor e2e-testing google-chrome-headless

protractor.e2e-sepc.ts

import {browser, element, by} from 'protractor';

describe('Open the link', () => {

    beforeEach(() => {
        browser.waitForAngularEnabled(false);
        browser.get('url');
        browser.sleep(2000);

    });

    it('Click on more button', () => {
        element(by.id('more').click();
        })
    })

当我在chrome上运行上述测试用例作为浏览器时,它运行成功,但是当我使用chrome - 无头浏览器运行它时,它显示错误为No element found using locator: By(css selector, *[id="more"])

protractor.config.js

multiCapabilities: [{
        'browserName': 'chrome',
        'chromeOptions': {
            args: ["--headless", "--disable-gpu"]
        }
}]

1 个答案:

答案 0 :(得分:1)

我的假设是2秒的睡眠是不够的,你需要explicitly wait才能显示所需的元素:

var more = element(by.id('more'));
var EC = protractor.ExpectedConditions;

browser.wait(EC.presenceOf(more), 10000)   
more.click();

请注意,你有一个错过的右括号,但我认为这只是一个错字:

element(by.id('more')).click();
//               HERE^