如何在ShadowDOM javascript中存储变量并执行量角器函数?

如何在ShadowDOM javascript中存储变量并执行量角器函数?,javascript,html,css,selenium,protractor,Javascript,Html,Css,Selenium,Protractor,我想做一些像 var ele=文件。。。。。。。。。。。。。。。 ele.click() 我认为不是一个变量,而是一个可以调用的函数: browser.executeScript("document.querySelector(\"tahitiapp\").shadowRoot.querySelector(\"tahitigroups\").shadowRoot.querySelector(\"vaadin-button[tabindex='0']\").click();") .then(f

我想做一些像

var ele=文件。。。。。。。。。。。。。。。
ele.click()

我认为不是一个变量,而是一个可以调用的函数:

browser.executeScript("document.querySelector(\"tahitiapp\").shadowRoot.querySelector(\"tahitigroups\").shadowRoot.querySelector(\"vaadin-button[tabindex='0']\").click();")
  .then(function() {
    console.log('Export Download button is clicked');
    browser.sleep(5000);
  })

我不确定这是否是您要问的,但您可以将属性添加到窗口:

    const myFunc = function () {
        return browser.executeScript("your script here;")
            .then(function() {
                console.log('Export Download button is clicked');
                browser.sleep(5000);
            });
    };
稍后将提供:

browser.executeScript('window.foo = () => document.querySelector("tahitiapp").shadowRoot.querySelector("tahitigroups").shadowRoot.querySelector("vaadin-button[tabindex=0]")')
您可以使用
by.js()
来计算JavaScript表达式,如
browser.executeScript

browser.executeScript('window.foo().click()')

不清楚你想在这里做什么<代码>查询选择器不创建变量。您可以将其结果存储在变量中。你能解释一下你想做什么吗?我想做这样的事
var clickOnexportButton=browser.executeScript(“document.querySelector(\'tahiti app\”).shadowRoot.querySelector(\'tahiti groups\”).shadowRoot.querySelector(\'vaadin button[tabindex='0']\')。click();”)clickOnexportButton我不想使用页面对象模型………将变量存储在一个位置,并在需要时使用它。
var clickOnDateTextBox=browser.executeScript(“document.querySelector(\'tahiti app\”)。shadowRoot.querySelector(\'vaadin ext date picker\”)。shadowRoot.querySelector(\'vaadin text field[id='input']\”)。click();单击日期文本框。然后(函数(){console.log('Clicked to Date TextBox');browser.sleep(2000);})
这是正确的方法吗?我收到了这个错误:属性'click'在类型'Promise'上不存在。你能运行
document.querySelector(“Tahitipp”).shadowRoot.querySelector(“tahitigroups”).shadowRoot.querySelector吗(“vaadin button[tabindex=0])
在浏览器控制台中查看它是否可以找到所需的元素。它找到元素@yongI正在获取错误:JavascriptError:javascript错误:无法读取nullI的属性“shadowRoot”,我只是告诉你如何添加窗口属性,shadowRoot的东西不是我的。
let vaadiBtn = element(by.js(function() {
  return document.querySelector("tahitiapp").
        shadowRoot.querySelector("tahitigroups").
        shadowRoot.querySelector("vaadin-button[tabindex='0']");             
}));

vaadiBtn.click()