Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.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
Python 按ID查找元素不可靠,但按Xpath查找元素的可靠性如何?_Python_Selenium_Xpath - Fatal编程技术网

Python 按ID查找元素不可靠,但按Xpath查找元素的可靠性如何?

Python 按ID查找元素不可靠,但按Xpath查找元素的可靠性如何?,python,selenium,xpath,Python,Selenium,Xpath,我一直在用Python中的Selenium为我的公司编写自动化测试用例 我的测试用例几乎每天都会失败,因为对于给定的元素,它在不同的服务器上有不同的ID。我今天早上做了一些研究,它的Xpath似乎相对一致 例如: 一个元素名为“panel-xxxx\u header\u hd”,这个“xxxx”是一个四位字符串;对于给定的元素,它可以是1028、1029或1030 我可以问你对这件事的看法吗?我知道从统计学上很难证明哪一个更可靠 谢谢您可以使用Contains()查找部分ID 假设没有任何其

我一直在用Python中的Selenium为我的公司编写自动化测试用例

我的测试用例几乎每天都会失败,因为对于给定的元素,它在不同的服务器上有不同的ID。我今天早上做了一些研究,它的Xpath似乎相对一致

例如:

  • 一个元素名为“panel-xxxx\u header\u hd”,这个“xxxx”是一个四位字符串;对于给定的元素,它可以是1028、1029或1030
我可以问你对这件事的看法吗?我知道从统计学上很难证明哪一个更可靠

谢谢

您可以使用Contains()查找部分ID

假设没有任何其他元素在其ID中包含“\u header\u hd”,则可以使用以下xpath(将*更改为所需的任何类型的元素):

或者,如果您想更具体一点,可以使用查找ID以该子字符串结尾的元素(同样,将*更改为您期望的元素类型:

//*[contains(@id, '_header_hd')]
*[id$='_header_hd']

请添加HTML,并给出一些ID如何变化的示例。它与DOM一样稳定。谢谢Richard,谢谢roippi。似乎值得一试。您可以使用类似于
“panel-…..\u header\u hd”
的东西,看看它是如何工作的。不幸的是,这些是XPath 2.0,任何主流浏览器都不支持。