【问题标题】:How to select radio button(contain Javascript) using Robot Framework?如何使用机器人框架选择单选按钮(包含 Javascript)?
【发布时间】:2018-07-15 00:03:45
【问题描述】:

希望 Robot Framework 和 Selenium 或 Selenium2Library 方面的专家可以帮助我弄清楚如何选择此单选按钮。我尝试了很多尝试,也在寻找解决方案。这个单选按钮的独特之处在于它有一个javascript。另外我正在使用 IE11 来自动化这个测试。

这是 HTML 代码:

<td>Is turnover figure available?</td>

<td valign="baseline">
<input type="radio" name="turnOverAvailableInd1" value="Y" onclick="javascript:turnOverAvailableToggle(this);" id="turnOverAvailableInd1Yes">YES

<input type="radio" name="turnOverAvailableInd1" value="N" onclick="javascript:turnOverAvailableToggle(this);" id="turnOverAvailableInd1No">NO        

</td>

我通过但未在单选按钮上选择的尝试(失败)是:

# Click Element xpath=(//input[@name, 'turnOverAvailableInd1'])[2]
# Click Element xpath=//*[contains(@id, 'turnOverAvailableInd1No')]
# Select Radio Button     turnOverAvailableInd1    turnOverAvailableInd1No
# Radio Button Should Be Set To    turnOverAvailableInd1    No
# Focus    xpath=(//input[@name="turnOverAvailableInd1"])
# Press Key     xpath=(//input[@id="turnOverAvailableInd1No"])    \\13
#Execute Javascript     javascript:turnOverAvailableToggle(this);

提前谢谢你。

【问题讨论】:

  • 对您使用的定位器的小评论 - [@name, 'turnOverAvailableInd1'] 不是一个有效的 xpath 表达式,[] 中的 ,。这一个 - [@name="turnOverAvailableInd1"] 将返回 2 个元素,而不是一个(对于 Focus 关键字)。
  • 这可能是第一个原因 - Click Element with_the_id 最初对您不起作用。 @chris 的回答是防弹的——如果页面中有这样的元素,这个关键字将发送点击它,不管它的类型。

标签: selenium automated-tests robotframework selenium2library


【解决方案1】:

我认为

Click Element    turnOverAvailableInd1No

应该可以,我也遇到过类似的情况。 您不必总是使用 xpath,id 或名称也可以用作定位器。 单选按钮应设置为检查您的单选按钮是否被选中(在一组单选按钮中,仅当该组已定义时)。

【讨论】:

  • 一个次要的,与问题评论没有直接关系 - 关于“不必总是使用 xpaths,id 或名称也可以用作定位器”。你是对的,不仅如此,使用元素的 id 比 xpath 快得多。由于浏览器内部构造 DOM 的方式,ID 被用作主要标识符;如果它们在源中是唯一的(它们应该是唯一的,但并不总是实现),它们将按原样使用,因此对它们的查找比任何其他策略都快。我们谈论的是现代硬件上大约毫秒或更短的加速,但是:)
  • 我不知道为什么我的点击元素和点击链接在 IE11 中不起作用。是的,Click Element ${SOME_ID} 仅适用于 chrome。
  • 我在 IE11 上也遇到了一些困难。以下是一些必需的注册表设置:github.com/SeleniumHQ/selenium/wiki/…
  • 即使在注册表设置之后,它也无法解决。确实没有针对此行为的已知解决方法吗?
  • 我不确定,但我还找不到任何东西。我使用 Chrome 和 Firefox 进行测试,因为我无法在我的机器上安装新软件,但也许你可以安装另一个 IE?
【解决方案2】:

在关键字 Select Radio Button 的 SeleniumLibrary 文档中

参数:组名、值

将单选按钮组 group_name 设置为 value。

要选择的单选按钮由两个参数定位:

  • group_name 是单选按钮组的名称。
  • value 是实际单选按钮的 id 或 value 属性。

组名指的是 Radio 元素所具有的常见name。值是指value 属性。

所以这将是正确的方法:

Select Radio Button    turnOverAvailableInd1    N

【讨论】:

  • 我的测试是使用两个浏览器 chrome 和 IE11。对于我所有的测试,“点击元素”仅适用于 Chrome。我必须使用“Focus”和“Press Key xpath=xx \\13”才能使 ie11 正常工作。
  • @A. Kootstra 我认为你犯了一个小错误 - 你在谈论 Select Radio Button 但最后你写了 Click Element (不接受 2 个参数)。
  • 选择单选按钮并单击元素不起作用。它仅适用于 chrome。
  • 这是我需要的答案,虽然不是这个问题的答案。很高兴它在这里。
猜你喜欢
  • 1970-01-01
  • 2017-06-25
  • 2020-10-07
  • 2018-07-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-24
  • 1970-01-01
  • 2016-11-24
相关资源
最近更新 更多