【问题标题】:How to store in a variable and perform protractor functions in shadow dom javascript?如何在shadow dom javascript中存储变量并执行量角器功能?
【发布时间】:2020-01-21 16:01:12
【问题描述】:

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);
  })

我想做类似的事情

var ele = 文档...... ele.click();

【问题讨论】:

  • 不清楚您在这里要做什么。 querySelector 不创建变量。您可以将其结果存储在一个变量中。你能解释一下你想要完成什么吗?
  • 我正在尝试做这样的事情.....var clickOnexportButton = browser.executeScript("document.querySelector(\"tahiti-app\").shadowRoot.querySelector(\"tahiti-groups\").shadowRoot.querySelector(\"vaadin-button[tabindex='0']\").click();") clickOnexportButton.then(function () { console.log('Export Download button is clicked'); browser.sleep(5000); }) });
  • 我不想使用页面对象模型............将变量存储在一个地方并在需要的地方使用它。
  • var clickOnDateTextBox = browser.executeScript("document.querySelector(\"tahiti-app\").shadowRoot.querySelector(\"vaadin-ext-date-picker\").shadowRoot.querySelector(\"vaadin-text-field[id='input']\").click();"); clickOnDateTextBox.then(function () { console.log('Clicked to Date TextBox'); browser.sleep(2000); }) 这样做是否正确?

标签: javascript html css selenium protractor


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    我不确定这是否是您所要求的,但您可以向窗口添加属性:

    browser.executeScript('window.foo = () => document.querySelector("tahitiapp").shadowRoot.querySelector("tahitigroups").shadowRoot.querySelector("vaadin-button[tabindex=0]")')
    

    它们将在以后提供:

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

    【讨论】:

    • 我收到错误消息:JavascriptError: javascript error: Cannot read property 'shadowRoot' of null
    • 我只是向你展示如何添加窗口属性,shadowRoot 的东西不是我的。
    【解决方案3】:

    您可以使用 by.js() 来评估 JavaScript 表达式,例如 browser.executeScript

    let vaadiBtn = element(by.js(function() {
      return document.querySelector("tahitiapp").
            shadowRoot.querySelector("tahitigroups").
            shadowRoot.querySelector("vaadin-button[tabindex='0']");             
    }));
    
    vaadiBtn.click()
    

    【讨论】:

    • 我收到此错误:“Promise”类型上不存在属性“click”。
    • 你能不能在浏览器控制台中运行document.querySelector("tahitiapp").shadowRoot.querySelector("tahitigroups").shadowRoot.querySelector("vaadin-button[tabindex=0]"),看看它是否能找到想要的元素。
    • 找到元素@yong
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-05
    • 2016-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多