【问题标题】:How can I select always the last radio button?如何始终选择最后一个单选按钮?
【发布时间】:2016-02-28 00:13:28
【问题描述】:

我有一个验证页面要通过 selenium webdriver 自动化进行测试。在验证页面上总是有三个问题。 但是这些问题是从问题池中选择的,因此对于单个用户,每次访问验证页面时可能会出现不同的问题。 假设我的池中有 20 个问题,每个问题有五个选项(单选答案),所以有 100 个单独的单选按钮,每个单选按钮在 DOM 中都有其单独的 ID/名称。 我无法自动化这部分网页。 为了继续我的测试,我需要始终为三个问题中的每一个选择最后一个单选按钮。

最后一个单选在标签文本中始终包含“无”或“从不”,并且单选文本标签是可点击的。 此外,每个单选按钮的名称定位器始终以“1402248”开头。 我在我的项目中使用 Page 对象模型。 有人可以帮助我了解如何识别每个无线电网络元素吗?

我正在使用这个:

@FindBy (xpath = "//*[@class='radio']//a[contains(text(),'never') or contains(text(),'None')]")
protected WebElement oVerifyIdentityFirstAnswer;

【问题讨论】:

  • 可以分享一下周边的HTML还是直接URL
  • 请分享网址

标签: selenium selenium-webdriver automated-tests ui-automation


【解决方案1】:

这个 CSS 选择器应该在父元素中找到所有类型最后的单选按钮

driver.findElements(By.cssSelector("input[type='radio']:last-of-type"))

如果您的单选按钮都单独封装,请将 last-of-type 移动到该容器元素:

driver.findElements(By.cssSelector("a:last-of-type" > input[type='radio']))

这将返回一个 WebElement 列表,您可以对其进行迭代并单击每个条目。顺便说一句,我不会使用 @FindBy 注释,因为它通常会导致过时异常。

【讨论】:

    【解决方案2】:

    尝试将您的 Xpath 更改为:

    xpath = "//*[@class='radio']//a[contains(text(),'never') or contains(text(),'None')][last()]"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-19
      • 2016-09-24
      • 2020-01-21
      • 1970-01-01
      • 2014-07-02
      • 1970-01-01
      • 2011-11-05
      • 2015-02-27
      相关资源
      最近更新 更多