Selenium插件,用于管理网页上的影子DOM元素。

pyshadow的Python项目详细描述


皮影

Selenium插件,用于管理网页上的多级阴影DOM元素。在

Build StatuscodecovPyPI version shields.ioLicense

阴影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元素对象。在

^{pr2}$

对于驻留在阴影根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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
测试偶数/奇数Java的测试   java如何编写在请求体中接受XML的swagger API   java PrimeTable面临奇怪的错误   java如何检查数组中输入的用户是否为回文?   java如何删除JButton中文本周围的框?   java阻止直接访问JSF2中的xhtml文件   java如何获取定义方法的类的名称?   while loop如何让用户只需输入数字,然后在Java中重试?   从应用程序注册中列出azure存储帐户容器时,java受众验证失败   Java线程之间的多线程数据交换   java检查数组中是否存在重复的索引值?   java正则表达式从字符串中复制第二个URL   java如何从gradle项目依赖项中排除METAINF?   java如何将JLabel[]添加到JTable?   使用kotlin播放java音频(位于internet上的文件)