【发布时间】:2020-06-10 07:42:33
【问题描述】:
当我尝试点击这个按钮时,他有点移动并打开一个子菜单。解决方案很简单,只需点击他上方几级的 div(仍然是按钮)。但他总是在改变班级名称。
我设法使用这种异常//div[@style]/span[@aria-label]/../../../../../.. 来做到这一点。
我也试过用//div[@style]/span[@aria-label]/parent::div[@role="option"],但是没用,不知道为什么。
有没有人有任何建议让它更体面?我确信“../”并不是要在这么多层次上使用...
另外,我试图在我的整个项目中使用 CSS 选择器,但是在花了几个小时查看 StackOverflow 答案之后,解决方案似乎是使用 XPATH。如果有办法使用 CSS 选择器进行此操作,我会非常感兴趣。
【问题讨论】:
-
看来你需要“祖先”轴。像
//div[@style]/span[@aria-label]/ancestor::div[@role="option"]这样的东西。但是,可以肯定的是,请发布您的数据样本。 -
谢谢。不幸的是,我不能使用您的解决方案,因为所需的元素有一个没有价值的类,所以 XPath 变得不可点击(不知道为什么)......无论如何,我很欣赏你的回答,但我想我需要坚持疯狂的点...
-
如果您提供部分 html 代码,我们可以检查是否有更好的方法来执行此操作。另外,您可以使用
//div[@style]/span[@aria-label]/ancestor::*[5]来缩短您的原始表达式。 -
@E.Wiest 是的,这比我所做的要好得多。您要回答这个问题以便我将其标记为已解决吗?再次,谢谢。这很有帮助。
标签: selenium xpath css-selectors