【问题标题】:Behat/Mink find element by xpathBehat/Mink 通过 xpath 查找元素
【发布时间】:2018-07-21 04:18:37
【问题描述】:

我正在尝试在 Behat 和 Mink 上下文中使用 XPath 访问一个元素,该元素没有但我的函数似乎找不到它

这是元素结构:

 <a data-iskeynav="true" data-test-id="compose-button" href="/d/compose/4661075315" class="e_dRA l_T cn_dBP cg_FJ k_w r_P A_6EqO u_e69 p_R S_n C_52qC I_Z1UEcsX D_F H_6VdP gl_C ab_C en_0 M_1Eu7sD ir3_Z1FS2Mn it3_dRA" role="button" 
aria-label="Compose" tabindex="20">Compose</a>

这是我的 php 代码

    $page = $this->getSession()->getPage();
    $element = $page->find('xpath', '//a[@data-test-id = "' . $id . '"]');

我什至使用了这个 XPath,被浏览器复制但没有成功

//*[@id="app"]/div[1]/div/div[1]/nav/div/div[1]/a

【问题讨论】:

  • 我们需要更多的上下文 - 至少与 XPath 所建议的一样多(例如,导致 a 的所有 div)。

标签: html behat mink


【解决方案1】:

您应该尝试向该a 添加一个条件,该条件具有某个具有值的属性或在该属性中包含某个值

例子:

css:#app a[data-test-id=compose-button]
css:#app a[href*=compose]

xpath://*[@id='app']//a[@data-test-id='compose-button']
xpath://*[@id='app']//a[contains(@href, 'compose')]

【讨论】:

    【解决方案2】:

    试试contains关键字:

    应该是:

    //a[contains(@data-test-id, '"'. $id . '"')]
    

    【讨论】:

      猜你喜欢
      • 2015-04-26
      • 1970-01-01
      • 2020-05-03
      • 1970-01-01
      • 2020-07-20
      • 2016-03-12
      • 2017-09-14
      • 2014-08-07
      • 1970-01-01
      相关资源
      最近更新 更多