【问题标题】:Protractor/Webdriver Accessing DOM elements propertiesProtractor/Webdriver 访问 DOM 元素属性
【发布时间】:2018-07-02 09:14:09
【问题描述】:

我正在为 Angular/Polymer 应用程序编写 e2e 测试(因此使用网络组件)。是否可以访问 DOM 属性,如下所示: $0.selectedItem? 我尝试使用:

elem = browser.executeScript('return document.querySelector("my-scrollList")');

然后调用

elem .then(function (el){
    console.log(el.selectedItem);
});

但它不起作用。

但是,如果我像这样直接从 executeScript 命令调用该属性,它可以工作,但非常乏味:

elem = browser.executeScript('return document.querySelector("my-scrollList").selectedItem');

有没有办法通过 WebElements 或 Protractor API 访问 DOM 属性?

提前致谢。

【问题讨论】:

    标签: selenium selenium-webdriver protractor automated-tests


    【解决方案1】:

    您可能想通过链接调用$ 来查找父级中的元素。看看Protractor API。 您的代码可能应该如下所示:

    elem.then(function (el){
        console.log(el.$('selectedItem'));
    });
    

    【讨论】:

    • 我认为您误解了这个问题。他问的不是遍历 DOM 或元素定位器,而是从这些元素中获取属性
    • 你的意思是获取属性?看看protractortest.org/#/…
    • @Oleksii 不,这是该元素的属性之一。您可以通过检查元素并转到属性选项卡来查找 Web 元素的属性。
    【解决方案2】:

    使用 CSS 选择器,通过在 <option> 中选择 selected 属性:

    $("my-scrollList").$("option[selected]")
    

    或:

    $("my-scrollList option[selected]")
    

    【讨论】:

    • 此解决方法不起作用,因为滚动列表不是
    • @JiggyJinjo,您需要在帖子中指定。一个可重现的例子非常受欢迎。 element(By.xpath("//my-scrollList/div[@name=../@selected]")) 呢?。
    • 对不起,我明天会用html源的截图更新我的帖子。 “selectedItem”是我希望能够使用的属性之一,但也有例如属性“baseList”,其中包含该滚动列表的所有项目,但是,正如我所说,其中只有少数被加载同时处理 DOM(以提高性能)。
    • @JiggyJinjo 不要发布 HTML 的屏幕截图。只需编辑您的问题并将(格式正确的)HTML 添加为文本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-29
    • 2018-01-17
    • 2020-07-10
    • 2017-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多