在 id 和 div 之间使用通配符的 Xpath?
Xpath with wildcards between id and divs?
我尝试使用 Robot Framework 在 table 中输入数据。 table 有一个 ID,但每次我加载页面时它都会改变(它是某种 UUID)所以我不能将它用作我的 xpath 的 "anchor"。然而,这个 table 的标题似乎是合理的,它具有固定的 ID。在标题和 table 之间有几个 div。所以像这样的东西(一些伪代码的混合和我在 Chrome 中复制选择器和 xpath 时得到的东西)到达 table:
第一行的第一个单元格
//*[@id="heading"] (a bunch of divs) /*[@id="random string of letters"]/div[3]/div/div/div[2]
我想写一个看起来像这样的 xpath
//*[@id="heading"] [wildcard for the random ID and divs] /div[3]/div/div/div[2]
这个怎么写?
谢谢。
如果 "header" 中只有一个元素包含您可以使用的 id 属性
//*[@id="heading"]//*[@id]/div[3]/div/div/div[2]
如果有多个具有 id 属性的元素,您需要更多的东西,例如,如果它包含某个标签
//*[@id="heading"]//*[contains(@id, "tag")]/div[3]/div/div/div[2]
或(如果使用 xpath 2.0)并且只有此 @id 在标题中包含一个 uuid
//*[@id="heading"]//*[matches(@id,"[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}")]/div[3]/div/div/div[2]
否则你将不得不尝试找到一些独特的东西(在 "heading" 的上下文中)来开始 div[3]/div/div/div[2]
搜索(如果你幸运的话 div[3]/div/div/div[2]
足够独特。
我尝试使用 Robot Framework 在 table 中输入数据。 table 有一个 ID,但每次我加载页面时它都会改变(它是某种 UUID)所以我不能将它用作我的 xpath 的 "anchor"。然而,这个 table 的标题似乎是合理的,它具有固定的 ID。在标题和 table 之间有几个 div。所以像这样的东西(一些伪代码的混合和我在 Chrome 中复制选择器和 xpath 时得到的东西)到达 table:
第一行的第一个单元格//*[@id="heading"] (a bunch of divs) /*[@id="random string of letters"]/div[3]/div/div/div[2]
我想写一个看起来像这样的 xpath
//*[@id="heading"] [wildcard for the random ID and divs] /div[3]/div/div/div[2]
这个怎么写?
谢谢。
如果 "header" 中只有一个元素包含您可以使用的 id 属性
//*[@id="heading"]//*[@id]/div[3]/div/div/div[2]
如果有多个具有 id 属性的元素,您需要更多的东西,例如,如果它包含某个标签
//*[@id="heading"]//*[contains(@id, "tag")]/div[3]/div/div/div[2]
或(如果使用 xpath 2.0)并且只有此 @id 在标题中包含一个 uuid
//*[@id="heading"]//*[matches(@id,"[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}")]/div[3]/div/div/div[2]
否则你将不得不尝试找到一些独特的东西(在 "heading" 的上下文中)来开始 div[3]/div/div/div[2]
搜索(如果你幸运的话 div[3]/div/div/div[2]
足够独特。