相关疑难解决方法(0)

使用Selenium访问Shadow DOM树

是否可以使用Selenium/Chrome webdriver访问Shadow DOM中的元素?

正如预期的那样,使用普通元素搜索方法不起作用.我在w3c上看到了对switchToSubTree规范的引用,但找不到任何实际的文档,示例等.

任何人都有这个成功吗?

javascript python selenium selenium-chromedriver shadow-dom

17
推荐指数
3
解决办法
1万
查看次数

在影子DOM中查找元素

Protractor 1.7.0引入了一个新功能:一个新的定位器by.deepCss,有助于在shadow DOM中查找元素.

它涵盖了哪些用例?您何时想要到达影子DOM中的元素?


我提出这个问题的原因是我在这个问题的动机部分缺失了 - 我认为量角器主要是一个有助于模仿真实用户交互的高级框架.访问影子树听起来像是一个非常深层次的技术问题,为什么你想这样做让我感到困惑.

selenium css-selectors selenium-webdriver shadow-dom protractor

9
推荐指数
1
解决办法
3578
查看次数

访问shadow DOM中的元素

是否可以使用python-selenium 在Shadow DOM中找到元素

用例示例:

我有这个inputtype="date":

我想点击右边的日期选择按钮,然后从日历中选择一个日期.

如果您要检查Chrome开发者工具中的元素并展开日期输入的影子根节点,您会看到该按钮显示为:

<div pseudo="-webkit-calendar-picker-indicator" id="picker"></div>
Run Code Online (Sandbox Code Playgroud)

屏幕截图演示了它在Chrome中的外观:

在此输入图像描述

按ID查找"选择器"按钮会导致NoSuchElementException:

>>> date_input = driver.find_element_by_name('bday')
>>> date_input.find_element_by_id('picker')
...
selenium.common.exceptions.NoSuchElementException: Message: no such element
Run Code Online (Sandbox Code Playgroud)

我也尝试过使用::shadow/deep/定位器的建议在这里:

>>> driver.find_element_by_css_selector('input[name=bday]::shadow #picker')
...
selenium.common.exceptions.NoSuchElementException: Message: no such element
>>>
>>> driver.find_element_by_css_selector('input[name=bday] /deep/ #picker')
...
selenium.common.exceptions.NoSuchElementException: Message: no such element
Run Code Online (Sandbox Code Playgroud)

请注意,我可以通过向其发送密钥来更改输入中的日期:

driver.find_element_by_name('bday').send_keys('01/11/2014')
Run Code Online (Sandbox Code Playgroud)

但是,我想通过从日历中选择日期来具体设置日期.

javascript python selenium selenium-webdriver shadow-dom

9
推荐指数
2
解决办法
5408
查看次数

有人知道如何使用 selenium webdriver 识别 shadow dom web 元素吗?

我们正在使用 selenium web 驱动程序和 python 进行测试自动化,并尝试使用 shadow dom 设计自动化 html5 应用程序。无法识别 shadow-root 下的任何元素。例如。如果我想访问下面给出的影子根下的任何元素,那么我该怎么做?任何帮助表示赞赏。

在此处输入图片说明

html python selenium selenium-webdriver shadow-dom

5
推荐指数
1
解决办法
9343
查看次数