Selenium 在多个日期时间选择器显示相同XPATH的场景中,如何唯一标识日期和时间选择器?
在多个日期时间选择器StartDate和EndDate显示相同XPATH的场景中,如何唯一标识日期和时间选择器 比如说, 起始日期UTC中选择日期的XPath: /html/body/div[3]/div/div/div/span/div/input 结束日期UTC中选择日期的XPath: /html/body/div[3]/div/div/div/span/div/input 如您所见,开始日期和结束日期都有相同的XPATH,但通过selenium使用这些XPATH自动化是不可行的 同一网页上日期时间选择器的快照Selenium 在多个日期时间选择器显示相同XPATH的场景中,如何唯一标识日期和时间选择器?,selenium,selenium-webdriver,selenium-chromedriver,Selenium,Selenium Webdriver,Selenium Chromedriver,在多个日期时间选择器StartDate和EndDate显示相同XPATH的场景中,如何唯一标识日期和时间选择器 比如说, 起始日期UTC中选择日期的XPath: /html/body/div[3]/div/div/div/span/div/input 结束日期UTC中选择日期的XPath: /html/body/div[3]/div/div/div/span/div/input 如您所见,开始日期和结束日期都有相同的XPATH,但通过selenium使用这些XPATH自动化是不可行的 同一网页上
如何唯一地识别这些控件,以便通过Selenium实现自动化?现代web应用程序对DOM进行了大量修改,以获得所需的体验。 实际的XPath取决于单击路径,因为该行为会影响DOM的形状。在第一次单击startDate时,XPath是 /html/body/div[2]/div[1]/div/div[1]/span[1]/div/input 因为UI库将在单击输入字段时添加div。 单击“结束日期”输入字段时,将为“结束日期”的popover创建另一个div。这将是:
/html/body/div[3]/div[1]/div/div[1]/span[1]/div/input在DOM中查找与日期选择器元素相对应的一些属性,这使得它们是唯一的。如果有这样的属性可用,您可以使用它们来唯一地标识如下所示的控件
/html/body/div[3]/div1/div/div1/span1/div/input[@attributeName='attributeValue']
在这种情况下,没有唯一属性可用,并且日期选择器控件都可用,那么您可以使用索引获取第一个和第二个元素
第一个要素:
/html/body/div[3]/div1/div/div1/span1/div//input[1]
第二要素
/html/body/div[3]/div1/div/div1/span1/div//input[2]
一次只显示一个日期时间选择器,您可以使用它来标识可见的日期时间选择器。您可以找到引用labelstart date的元素。你能添加相关的HTML吗?