如果没有在量角器中使用browser.getCurrentUrl,为什么我会让Element无法进行交互?

时间:2017-11-24 14:07:31

标签: javascript angularjs selenium-webdriver protractor

我有这段代码:

const elem = element(by.xpath(selector));
browser.getCurrentUrl();
browser.wait(() => elem.clear().getText().then(text => text === ''), timeout, `Waiting for element '${selector}' to be cleared timed out`);

工作正常。但是如果我删除了browser.getCurrentUrl(),它就会失败。

const elem = element(by.xpath(selector));
browser.wait(() => elem.clear().getText().then(text => text === ''), timeout, `Waiting for element '${selector}' to be cleared timed out`);

以下是错误的一部分:

- Failed: invalid element state: Element is not currently interactable and may not be manipulated
    (Session info: chrome=60.0.3112.78)
    (Driver info: chromedriver=2.33.506092 (733a02544d189eeb751fe0d7ddca79a0ee28cce4),platform=Linux 4.4.0-98-generic x86_64)
    (Session info: chrome=60.0.3112.78)
    (Driver info: chromedriver=2.33.506092 (733a02544d189eeb751fe0d7ddca79a0ee28cce4),platform=Linux 4.4.0-98-generic x86_64)
    at WebDriverError (/usr/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/error.js:27:5)
    at InvalidElementStateError (/usr/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/error.js:124:5)
    at Object.checkLegacyResponse (/usr/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/error.js:546:15)
    at parseHttpResponse (/usr/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/http.js:509:13)
    at doSend.then.response (/usr/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/http.js:441:30)
    at process._tickCallback (internal/process/next_tick.js:109:7)
    From: Task: WebElement.clear()
    at Driver.schedule (/usr/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver.js:807:17)
    at WebElement.schedule_ (/usr/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver.js:2010:25)
    at WebElement.clear (/usr/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver.js:2351:17)
    at actionFn (/usr/lib/node_modules/protractor/built/element.js:89:44)
    at Array.map (native)
    at actionResults.getWebElements.then (/usr/lib/node_modules/protractor/built/element.js:461:65)
    at ManagedPromise.invokeCallback_ (/usr/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:1376:14)
    at TaskQueue.execute_ (/usr/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:3084:14)
    at TaskQueue.executeNext_ (/usr/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:3067:27)
    at asyncRun (/usr/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:2927:27)
    at /usr/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:668:7
    at process._tickCallback (internal/process/next_tick.js:109:7)Error

为什么我会这样做?

正确的方法是什么?如果我不需要,我不想要求当前的URL。我也想了解这个问题。

谢谢

0 个答案:

没有答案