【问题标题】:Does an XPath change if the content inside it changes?如果 XPath 中的内容发生变化,XPath 会发生变化吗?
【发布时间】:2021-10-23 07:04:51
【问题描述】:

如果 XPath 中的内容发生变化,Xpath 会发生变化吗?

即该网站将 XPath 中的文本从“支持”更改为“支持”。即使文本发生变化,XPath 会发生变化还是保持不变?

【问题讨论】:

  • XPath changes 是什么意思?
  • inspect 元素中的 XPath 代码。当您右键单击一个元素并复制 XCode 时,如果内容发生变化,它会改变吗?这是否更有意义?
  • XPath 不是 Web 元素中的代码。 XPath 是一种根据属性在页面上定位 Web 元素的语法
  • 是的,如果我编辑按钮的名称,它会改变吗?所以保留 CSS,但只需将按钮内的文本从“支持”更改为“支持”。

标签: python selenium xpath bots


【解决方案1】:

XPath 是一种基于标签名称、类名、id、href 等值等属性在页面上定位元素的语法。 它也可以相对于其他元素定位。
因此,如果您基于元素的标记名称和类名称(例如)定位元素,并且更改元素文本内容,这不会影响使用先前创建的 XPath 定位器选择此元素。
但是,如果您根据元素的文本内容定位元素并更改该文本 - XPath 定位器显然不会再找到该元素,因为现在此网页上不再显示带有旧文本的元素。

【讨论】:

    【解决方案2】:

    您犯了一个常见的错误,即认为每个元素都有“一个 XPath”。不是这样 - 有任意数量的 XPath 表达式将选择特定元素。就像您可能是 John Smith、Mary Smith 的丈夫、Pete Smith 的第二个儿子、Susan Smith 的父亲或穿着红色运动鞋的那个人一样,在 XPath 中可以通过任意数量的显着特征来识别元素:并且任何特定的 XPath 表达式都将继续存在选择该元素,只要这些特征不改变。

    【讨论】:

      【解决方案3】:

      看,xpathharcoded 文本是不好的做法,因为如果您在 English 中查看网站,那么 xpath(比方说)//div[text()='support'] 代表 DOM 中的至少一个节点,其中如果其他国家的同一个网站(比如说德语)有一些不同的支持文本,对吧?所以你的自动化脚本会因为没有通用的 xpath 定位器而失败。

      话虽如此,xpathIDclass nametag namecss selectorlink textpartial link text 更不受欢迎,如果它们都没有明显工作,你将不得不使用xpath。如果你想在 DOM 中向上移动,xpath 也很方便。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-05-08
        • 2018-07-12
        • 2018-04-01
        • 2010-10-30
        • 2021-06-27
        • 2017-04-13
        • 2017-09-28
        • 1970-01-01
        相关资源
        最近更新 更多