【问题标题】:Codeception with Webdriver - Clicking button with same name/value/type使用 Webdriver 的 Codeception - 单击具有相同名称/值/类型的按钮
【发布时间】:2015-06-30 17:33:21
【问题描述】:

我正在尝试找出如何将 $I->click 与 codeception 一起用于与同一页面上的另一个按钮共享相同名称/值/类型的按钮。例如:

<input class="submit_btn uppercase" type="submit" name="go" value="/GO/"> // button I want to click

<input class="submit_btn" type="submit" value="/GO/" name="go"> // button I don't want to click

我应该使用什么语法来区分两者?我尝试了许多不同的方法,包括在按钮名称之后使用 CSS 定位器,例如:

$I->click('go', '.uppercase'); // 2nd item is CSS locator

我也试过了:

$I->click('go', '.submit_btn uppercase'); // 2nd item is CSS locator

【问题讨论】:

  • 你可以试试这个:$I->click('go', '.submit_btn.uppercase');

标签: php css selenium-webdriver webdriver codeception


【解决方案1】:

首先,我相信您应该找到一个最近定义了 id 的父标签。我假设有一个父标签 id="formId" 这是通过 CSS 选择器单击该元素的代码:

$I->click('#formId > input.submit_btn.uppercase');

还有另一种方法可以通过 xpath 来单击此元素:

$I->click('//input[@class="submit_btn uppercase"]');

【讨论】:

  • 父表单没有id标签。这个网站的一些设计相当糟糕。但是,xpath 定位器确实有效!
【解决方案2】:

我不熟悉 codeception,但如果它具有完整的 CSS 选择器支持(在快速查看他们的文档后对我来说模棱两可),您可以使用 :not(s) selector

如果是这样,你应该可以使用类似的东西:

$I->click('go', '.submit_btn:not(.uppercase)');

【讨论】:

  • 我实际上是在尝试抓住 class="submit_btn 大写",而不是避开那个按钮。这行代码导致解析错误:(
  • 确实如此。不知道我是如何在脑海中颠倒过来的。其他人已经建议我现在要跟进的内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多