当前位置: 首页 > 知识库问答 >
问题:

如何使用XPath查找标记并使用Capybara单击它

宰父夕
2023-03-14

使用Ruby、Capybara、Selenium、Cucumber、XPath等在我的自动化项目中查找元素并单击的最佳方式是什么。

我需要单击并展开的HTML元素(equal accordion)是:

<a href="javascript:;" class="dcjq-parent">
  <i class=""></i>
  <span>Customs Reports</span>
  <span class="dcjq-icon"></span>
</a>

我目前使用XPath命令查找元素并单击,但效果不太好,因为它正在查找元素,但有时单击,有时不单击。

page.find(:xpath, "//*[text()='Customs Reports']").click

共有2个答案

颜嘉福
2023-03-14

要单击Capybara中的链接,您可以使用:

click_link 'Customs Reports'

另一种方法是:

find('span', text: 'Customs Reports').click
宗冷勋
2023-03-14

正如@mechnicov所言,点击链接的“正确”方式是使用“海关报告”点击链接,但其行为可能与您所做的没有任何不同。

这是因为水豚会在“看到”链接后立即单击该链接,这可能是在附加所需的JavaScript行为之前,或者是在链接被动画化到页面中(移动)时。

任何一种都可以产生您看到的古怪行为,因为JavaScript行为不会触发,或者如果进行动画,因为单击可能会错过移动链接。您可以通过在单击之前添加睡眠来测试它,但正确的修复方法是在页面上断言表示页面实际上已准备好供用户输入的内容。

这个断言完全取决于您正在测试的应用程序以及页面上实际发生的情况。

 类似资料:
  • 问题内容: 在这种情况下,我需要使用Selenium api 查找并单击“ 关于” 链接,但无法执行此操作。 我所做的是 但它不起作用 问题答案: 以我的经验,Selenium API在这种方式上有很多缺陷。通常只能通过重新选择选择器来克服它们。例如,您可以尝试使用XPath选择器来获取元素: 另外,如果您尝试使用Internet Explorer,则可能不会单击该元素而是模拟按下Enter键来帮

  • 错误:NoSuChelementException:没有这样的元素:无法定位元素:{“method”:“xpath”,“selector”:“//td[@class='c($PrimaryColor)W(51%)']”}(会话信息:chrome=77.0.3865.120) 我的代码如下: 这是我试图从“https://finance.yahoo.com/quote/goog?p=goog”中搜索

  • 我试图获取锚标记中的信息,但不是。我想从易趣上的几个卖家那里提取评级分数。在以下超文本标记语言代码中,您可以看到评级分数的位置。有没有一种方法可以不使用,因为从卖方更改为卖方而获得关于"BewerTungspunkteski"(德语的评级分数)的信息?这个例子中的评分是32。因为文本“BewerTungspunkteski”只在这一行,我想可以让它搜索这段文本,并提取带有这段文本的咏叹调标签。 这

  • 我只需要帮助替换alt标签中的-(而不是代码/html的其余部分)。 错误:alt=“允许滚筒干燥” 良好:alt=“允许滚筒干燥” 我使用的是ATOM,而REGEXP教程对我来说是陌生的。(看起来很奇怪) 任何帮助都将不胜感激。 最终,我也会瞄准标题标签,但我需要一个领先的开始

  • 我有以下html文本: 我试图点击复选框,其中数据111在同一行中。 我正在尝试这样做: 页FindChildByXPath(//span[contains(text(),'111')]/parent::td/previous sibling::td/input[@name='caller\u incrollment\u form:enrollmentParticipantSelectionTab

  • 我搞不懂这个。 我在这个网站上工作,我使用Python中的selenium来单击类名“yellow showPopupUnder”下的第一个元素(屏幕的主要部分有20行关于房屋的黄色信息)。 当我让Selenium点击该行后,它会打开并显示更多信息。我对有“选中”和“未选中”框的部分感兴趣。这些复选框位于这样的div中: 未选中的框位于一个div中,如下所示: 我试着用几种方法联系他们: 我还尝试