如何通过xpath查找Selenium中的所有元素并忽略它们的第一部分?

时间:2016-06-25 23:08:43

标签: selenium xpath find webdriver element

例如,那些3:

.//*[@id='stream-item-tweet-746838978284818432']/div/div[2]/div[5]/div[2]
.//*[@id='stream-item-tweet-746838891605397504']/div/div[2]/div[5]/div[2]
.//*[@id='stream-item-tweet-746838648461590528']/div/div[2]/div[5]/div[2]

网站上的数字不断变化。是否有选项可以通过xpath搜索这些元素并忽略中间的长数字?

3 个答案:

答案 0 :(得分:0)

尝试使用xpath的包含功能 .//*[contains(@id,'stream-item-tweet')]/div/div[2]/div[5]/div[2]

答案 1 :(得分:0)

您可以使用 开头 - 功能,这样您只能获得 id 的元素你想要的文字

.//*[starts-with(@id,'stream-item-tweet-')]/div/div[2]/div[5]/div[2]

答案 2 :(得分:0)

如果您不介意使用CSS选择器,您可以更直接地完成此操作。你的XPath在所有相关元素上都有些脆弱。下面是Java中的工作代码。

driver.findElements(By.cssSelector("[aria-label='Tweet actions']"));

我确定这可以转换为XPath,如果你必须有一个,但我不是XPath专家。