Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Selenium 在多个日期时间选择器显示相同XPATH的场景中,如何唯一标识日期和时间选择器?_Selenium_Selenium Webdriver_Selenium Chromedriver - Fatal编程技术网

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自动化是不可行的 同一网页上

在多个日期时间选择器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吗?