【问题标题】:Watir /Cucumber Unable to locate element : dd-field div.dd-arrow-box (Using CSS Selector*Watir /Cucumber 无法定位元素:dd-field div.dd-arrow-box(使用 CSS 选择器*
【发布时间】:2014-01-28 08:24:30
【问题描述】:

主诉:

使用 CSS 选择器无法定位元素

Css 路径:

html.ng-scope body.ng-scope div.snap-content div.content-container div.ng-scope div.content-box div div.cb-landing-module div.deposit-acct-box div.dropdown div.dd-field div.dd-arrow-box

CSS 选择器:

.dropdown .dd-arrow-box

我如何在 Watir/Cucumber 中使用它:

@browser.element(:css => 'dd-arrow-box').click

错误:

Cucumber 报错:无法延迟元素

问题描述:

我有一个我想点击的组合框 结果将是从列表中选择项目。 我已经尝试过 xpath ,可能会出现相同的错误 找不到元素

试过了:

可能的/同步问题:偶数时开火……。 失败

Xpath - 失败

当我关闭该方法时(例如)点击离开并添加存在它被发现。我不能点击它

编辑:从评论中添加 HTML:

      <div class="dd-arrow">
    </div>
  </div> 
</div> 
<ul class="dd-box" style="display: none;"> 
  <li class="dd-list-head"> Direct Deposit </li> 
  <li class="dd-item ng-scope ng-binding" ng-click="selectAccount(directDeposit)" ng-repeat="directDeposit in directDeposits"> 
  <span class="acct-name ng-binding">WELLS FARGO BANK, NA</span>

还在疑惑最后抛出了如下异常:invalid attribute: :css (Watir::Exception::MissingWayOfFindingObjectException)

【问题讨论】:

  • 你的元素在框架内吗?我记得被 watir 弄糊涂了,没有找到我可以清楚地看到的东西,并从开发工具控制台用 jquery 选择......如果它在一个框架内,像@browser.frame(:name, 'FrameName').element(:css =&gt; 'dd-arrow-box').click 这样的东西就可以了:P

标签: css selector watir


【解决方案1】:

这可能是因为您要查找的是dd-arrow-box 标记,而不是类。将您的代码更改为如下所示:

@browser.element(:css => '.dd-arrow-box').click 

就像你定义一个 css 文件一样。注意dd-arrow-box前面的句号

这是一个很好的例子。 给定html:

<div class="divhere">
  <p>Hello</p>
</div>

您可以使用代码@browser.element(css: 'p').text 从段落中获取文本。

同样,@browser.element(css: '.divhere') 将使用类选择器定位 div 元素。

【讨论】:

  • 感谢您的及时回复。我确实使用了您建议的示例 "browser.element(:css => '.dd-arrow-box').click " 但我得到了同样的错误。这很奇怪,因为萤火虫正在突出显示我需要的元素。该元素不在框架中。
  • 如果您发布 html 会有所帮助。同时尝试将其更改为@browser.element(css: 'div.dd-arrow-box').click。确保将@browser 放在前面。此外,如果您可以发布其余代码,而不仅仅是错误消息和 sn-p,那将会更有帮助。
  • 您也可以尝试将呼叫更改为@browser.div(css: 'div.dd-arrow-box').click
  • 您应该更新您的帖子,而不是尝试在评论中发布 html。看起来您使用了错误的 CSS 选择器。您是否要选择&lt;div class="dd-arrow"&gt;&lt;/div&gt;?然后你需要使用@browser.div(css: '.dd-arrow').click你应该编辑你的帖子以反映你看到的错误和你使用的代码是什么。
猜你喜欢
  • 1970-01-01
  • 2021-11-15
  • 2019-12-25
  • 1970-01-01
  • 2016-05-06
  • 2015-10-06
  • 1970-01-01
  • 2019-07-20
  • 2018-12-05
相关资源
最近更新 更多