【问题标题】:How to write 3 almost equal xpaths more concise如何更简洁地编写 3 个几乎相等的 xpath
【发布时间】:2017-08-10 23:19:45
【问题描述】:

设置

我正在使用 Selenium 填写表格。

我有三个 Xpath 到表单中的三个不同字段,

'//*[@id="down-contact-box"]/div[3]/form/fieldset/div[2]/div[1]/div[1]/input'
'//*[@id="down-contact-box"]/div[3]/form/fieldset/div[2]/div[1]/div[2]/input'
'//*[@id="down-contact-box"]/div[3]/form/fieldset/div[2]/div[1]/div[3]/input'

只有最后一个 div[] 不同。


问题

我宁愿做一些更简洁的事情,而不是每次都使用它们

我正在寻找可以让我做的事情,

def x(i) = '//*[@id="down-contact-box"]/div[3]/form/fieldset/div[2]/div[1]/div[i]/input'

这样我只需要写x(1), x(2)x(3)

我该怎么做?

【问题讨论】:

  • 如果您考虑分享相关的HTML,我觉得必须有更方便和令人信服的方式来识别这些节点。
  • 这些 XPath 太长而且很脆弱(文档更改时很容易损坏)。如果您发布指向页面或相关 HTML 的链接并让我们手工制作 XPath,您会得到更好的答案。

标签: python selenium xpath


【解决方案1】:

如果我正确理解您的问题,那就很简单了。 你可以这样做:

def x(i):
    return '//*[@id="down-contact-box"]/div[3]/form/fieldset/div[2]/div[1]/div[{}]/input'.format(i)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-16
    • 1970-01-01
    • 2016-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多