Xpath在ID和div之间使用通配符?

时间:2018-11-09 14:29:02

标签: html xpath wildcard

我尝试使用Robot Framework在表中输入数据。该表具有一个ID,但是每次加载页面时都会更改(它是某种UUID),所以我不能将其用作xpath的“锚”。但是,此表的标题似乎从合理的开头开始具有固定的ID。在标题和表格之间有几个div。像这样(伪代码的混合以及在Chrome中复制选择器和xpath时得到的混合)到达表第一行的第一个单元格:

didReceiveMessage

我想写一个看起来像这样的xpath

//*[@id="heading"] (a bunch of divs) /*[@id="random string of letters"]/div[3]/div/div/div[2]

我该怎么写?

谢谢。

1 个答案:

答案 0 :(得分:3)

如果“标题”中只有一个元素包含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]

否则,您将不得不尝试找到独特的内容(在“标题”的上下文内)以开始div[3]/div/div/div[2]搜索(如果幸运的话,div[3]/div/div/div[2]足够独特)。