量角器:如何通过执行js脚本返回元素?

Лил*_*ина 1 javascript angularjs selenium-webdriver protractor

我的目标是返回元素的下拉列表。我试图用量角器的方法做到这一点,但是我没有找到简单的方法来搜索跨距元素。因此,我想使用javasript代码:

var my_js_element = browser.executeScript(jQuery("td.ng-binding>div.b-combobox.ps-list-drop-single-autocomplete.ng-isolate-scope.ng-pristine.ng-required.ng-invalid.ng-invalid-required").isolateScope().psListDrop.toggleVisible(true).element);
Run Code Online (Sandbox Code Playgroud)

但这不起作用。而且我不确定是否可以使用此方法返回元素。是真的吗 也许有人知道我该怎么做?

Mic*_*nov 6

根据的文档browser.executeScript

如果脚本具有返回值(即,如果脚本包含return语句),则将采取以下步骤来解析此函数的返回值:-对于HTML元素,该值将解析为webdriver.WebElement。

从您的executeScript调用中,您应该返回一个HTML元素,它也应该是一个“本机” DOM元素,因此可以将其转换为webdriver.WebElement。然后,通过promise解析此元素,并且可以将其用作回调中的参数.then()

browser.executeScript(function () {

    var element = jQuery('.world').get(0); // get "native" DOM node

    return element; // explicit return

}).then(function (webElement) {

    expect(webElement.getText()).toContain('Hello');

});
Run Code Online (Sandbox Code Playgroud)