【问题标题】:using xpath to tell selenium where to click?使用 xpath 告诉 selenium 点击哪里?
【发布时间】:2011-03-25 06:45:33
【问题描述】:

我对这一切都很陌生,但不久前我学到了一些关于 python 的东西,你能帮我指定正确的 XPath 供 selenium 点击吗?

我试过这种方法,但显然没有用:(

self.selenium.click("xpath=//html/body/div/div/div/div[4]/ul/li[3]/a")

如果你想知道我从哪里得到那个丑陋的 XPath,它来自 Firebug 的复制 XPath 选项。

我认为 HTML sn-p 就像地狱一样长,所以我只能这样做:

<html>
  <body>
    <div id="outer_wrapper">
      <div id="container">
        <div id="header">
          <div id="menunav">
            <ul>                                
              <li><a title="Login page" href="[dest]">Login</a></li>                              
              <li><a title="" href="[dest]">Sitemap</a></li>
              **<li><a title="" href="[dest]">Administration</a></li>**
            </ul>
          </div>
        </div>
      </div>
    </div>
  </body>
</html>

【问题讨论】:

  • 如果你给我们它的 HTML 会有所帮助
  • HTML是动态生成的,所以每次点击的item都会发生变化?
  • @decebal:首先,不要以// 开始您的路径,只需/ 即可。其次,是否有 XHTML 命名空间声明?
  • 也许我的问题不是直截了当,我知道如何提取 Xpath,我只是不知道如何将它与 selenium 一起使用
  • 它可能更容易使用://a[@href="http://..."]

标签: python xpath selenium


【解决方案1】:

下面是一些示例定位器,您可以使用它们来单击Administration 链接(基于您的 XPath 和 HTML sn-p)。正确的 Selenium 命令是 click

  • link=Administration
  • css=a:contains(Administration)
  • css=#menunav a:nth-child(3)
  • xpath=id('menunav')/descendant::a[3]
  • //a[text()='Administration']
  • //a[contains(text(), 'Administration')]

我希望这会为您指明正确的方向。

【讨论】:

  • 谢谢戴夫,但我还是不明白你为什么那样使用 text() 方法,不应该是 text('administration') 吗?
  • 你是对的,在这种情况下你不需要使用contains。您可以改用//a[text()='Administration']
猜你喜欢
  • 1970-01-01
  • 2015-02-23
  • 1970-01-01
  • 2011-03-23
  • 2014-06-06
  • 1970-01-01
  • 2019-11-19
  • 1970-01-01
  • 2010-12-13
相关资源
最近更新 更多