如何通过 xpath 查找 Selenium 中的所有元素并忽略它们的第一部分?
How to find all elements in Selenium by xpath and ignore their first part?
例如这 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 搜索这些元素并忽略中间的长数字?
尝试使用xpath的contains功能
.//*[contains(@id,'stream-item-tweet')]/div/div[2]/div[5]/div[2]
您可以使用 starts-with 函数,这样您将只获得带有 的元素id 以你想要的任何文本开头
.//*[starts-with(@id,'stream-item-tweet-')]/div/div[2]/div[5]/div[2]
如果您不介意使用 CSS 选择器,您可以采用更直接的方式来完成此操作。您的 XPath 对于所有相关元素来说都有些脆弱。下面是 Java.
中的工作代码
driver.findElements(By.cssSelector("[aria-label='Tweet actions']"));
我确定这可以转换为 XPath,如果您绝对需要的话,但我不是 XPath 专家。
例如这 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 搜索这些元素并忽略中间的长数字?
尝试使用xpath的contains功能
.//*[contains(@id,'stream-item-tweet')]/div/div[2]/div[5]/div[2]
您可以使用 starts-with 函数,这样您将只获得带有 的元素id 以你想要的任何文本开头
.//*[starts-with(@id,'stream-item-tweet-')]/div/div[2]/div[5]/div[2]
如果您不介意使用 CSS 选择器,您可以采用更直接的方式来完成此操作。您的 XPath 对于所有相关元素来说都有些脆弱。下面是 Java.
中的工作代码driver.findElements(By.cssSelector("[aria-label='Tweet actions']"));
我确定这可以转换为 XPath,如果您绝对需要的话,但我不是 XPath 专家。