【问题标题】:Selenium PHP - findElement by xpath, complex xpath not workingSelenium PHP - 通过 xpath 找到元素,复杂的 xpath 不起作用
【发布时间】:2017-01-29 05:34:34
【问题描述】:

亲爱的,

我遇到了以下 xpath 的问题,如果 $pos 大于 1,它不返回任何元素。

请注意,有超过 1 个 div[@class="panel-heading"] 表单[包含(@action, "/myaction?")]

$this->webdriver->findElement(WebDriverBy::xpath('//form[contains(@action, "/myaction?")]//div[@class="panel-heading"][' . $pos . ']//a[contains(@onclick, "do_something")]'))->click();

知道我的 xpath 有什么问题吗?

提前致谢, 莱昂内尔

【问题讨论】:

  • xpath 看起来没问题。如果可能,请添加表单的 html sn-p。您在浏览器中尝试过 xpath 吗?

标签: php xml selenium xpath


【解决方案1】:

检查您是否只有一个与该操作相关的链接,仅搜索
//a[contains(@onclick, "do_something")] 并查看您是否识别出 make 唯一的 do_something
避免使用[number],因为如果任何 abode div 消失了,它会很容易崩溃。

如果您在$pos 大于一时遇到问题,则意味着获得此条件的div 与任何其他div 不在同一级别。

【讨论】:

  • 每个 div[@class="panel-heading"] 在 DOM 树中处于同一级别。对于每一个,下面只有 1 个 a[contains(@onclick, "do_something")]。
【解决方案2】:

如果您在xpath 中使用索引,则应尝试使用(),如下所示:-

$this->webdriver->findElement(WebDriverBy::xpath('(//form[contains(@action, "/myaction?")]//div[@class="panel-heading"])[' . $pos . ']//a[contains(@onclick, "do_something")]'))->click();

【讨论】:

    猜你喜欢
    • 2021-03-20
    • 2014-08-19
    • 2016-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-30
    • 1970-01-01
    相关资源
    最近更新 更多