Selenium插件,用于管理网页上的影子DOM元素。
pyshadow的Python项目详细描述
皮影
Selenium插件,用于管理网页上的多级阴影DOM元素。在
阴影DOM:
shadowdom是一种提供组件样式和标记封装的web标准。它是Web组件故事中非常重要的一部分,因为它确保了一个组件在任何环境下都能工作,即使页面上有其他CSS或JavaScript。在
自定义HTML标记:
自定义HTML标记不能用selenium工具直接标识。使用这个插件,你可以处理任何自定义的HTML标记。在
问题陈述:
- 您已经用javaselenium开发了基于web的自动化框架。您的前端应用程序使用了使用shadow-dom的聚合物。Selenium没有提供任何方法来处理shadowdom元素。在
- 您的应用程序页面包含无法使用selenium直接识别的自定义HTML标记。在
解决方案:
您可以通过添加jar文件或在javaselenium项目中包含maven依赖项来使用这个插件。在
工作原理:
方法:
{want from this}使用单个元素
find_elements(str css_selector)
:如果要从DOM中查找所有元素,请使用此选项
find_element(object parent, str css_selector)
:如果要从父对象DOM中查找单个元素,请使用此选项
find_elements(object parent, str css_selector)
:如果要从父对象DOM中查找所有元素,请使用此选项
set_implicit_wait(int seconds)
:将此方法用于隐式等待
set_explicit_wait(int seconds, int polling_time) raise Exception
:将此方法用于显式等待
get_shadow_element(object parent,str css_selector)
:如果要从父DOM中查找单个元素,请使用此选项
get_all_shadow_element(object parent, str css_selector)
:如果要从父DOM中查找所有元素,请使用此选项
get_parent_element(object element)
:使用此选项获取web元素的父元素。在
get_child_elements(object parent)
:使用此项获取父元素的所有子元素。在
get_sibling_elements(object element)
:使用此项获取所有相邻(同级)元素。在
get_sibling_element(object element, str css_selector)
:使用css选择器获取相邻(同级)元素。在
get_next_sibling_element(object element)
:使用此项获取下一个相邻(同级)元素。在
get_previous_sibling_element(object element)
:使用此项获取上一个相邻(同级)元素。。在
is_visible(object element)
:如果您想找到元素的可见性,请使用此选项
is_checked(object element)
:如果要检查复选框是否选中,请使用此选项
is_disabled(object element)
:如果要检查元素是否被禁用,请使用此选项
get_attribute(object element, str attribute)
:如果您想获得aria selected等属性和元素的其他自定义属性,请使用此选项。在
select_checkbox(str label)
:使用此选项可使用标签选择checkbox元素。在
select_checkbox(object parent, str label)
:使用此选项选择使用标签的checkbox元素。在
select_radio(str label)
:使用此选项选择使用标签的无线电元素。在
select_radio(object parent, str label)
:使用此选项使用标签从父DOM中选择单选元素。在
select_dropdown(str label)
:使用此选项可使用标签选择下拉列表项(如果只有一个下拉列表存在或加载在UI上,则使用此选项)。在
select_dropdown(object parent, str label)
:使用此选项从父DOM中使用label选择下拉列表项。在
scroll_to(object element)
:使用此选项滚动到web元素。在
你必须从PyPi安装这个插件。在
Maven
pip install pyshadow
选择器:
示例:
对于html标记<paper-tab title="Settings">
您可以在框架中使用此代码来获取paper tab元素对象。在
对于驻留在阴影根dom元素下的html标记<input title="The name of the employee">
您可以在框架中使用此代码来获取paper tab元素对象。在
fromseleniumimportwebdriverfrompyshadow.mainimportShadowfromwebdriver_manager.chromeimportChromeDriverManagerdriver=webdriver.Chrome(ChromeDriverManager().install())shadow=Shadow(driver)element=shadow.find_element("input[title='The name of the employee']")text=element.text
对于驻留在shadow根dom元素下的html标记
<properties-pageid="settingsPage"><textareaid="textarea"></properties-page>
您可以在框架中使用此代码来获取textarea元素对象。在
fromseleniumimportwebdriverfrompyshadow.mainimportShadowfromwebdriver_manager.chromeimportChromeDriverManagerdriver=webdriver.Chrome(ChromeDriverManager().install())shadow=Shadow(driver)element=shadow.find_element("properties-page#settingsPage>textarea#textarea")text=element.text
等待:隐式和显式
如果要使用wait来同步脚本,那么应该使用隐式或显式wait特性。在
- 在
对于隐式等待,可以使用shadow.set_implicit_等待(int秒)方法。在
在 - 在
明确的等待,y您可以使用shadow.set_显式等待(int秒,int pollingTime)方法。在
在 - 在
在隐式等待中,驱动程序将至少等待n秒,如^{str 1}中设置的那样$shadow.set_implicit_等待(n) 。在
在 - 在
在显式等待中,驱动程序将按^{str 1}中设置的最多等待n秒$shadow.set_implicit_等待(n,m)。中间驱动程序将每隔m秒检查一次WebElement是否存在。在
注意:用于组合多级dom结构。所以你可以合并5个级别的dom。如果你想要更多的水平,修改脚本,准备好摇滚。
文档Link
在
- 项目
标签: