首页 > 解决方案 > 使用 CucumberJS 和 Selenium 进行自动化测试时,是否可以单击 Blueprintjs Radio 组件的 Radio 按钮?

问题描述

我正在使用 CucumberJS 和 Selenium Webdriver 进行自动化测试。我正在尝试使用这段代码单击表单中的单选按钮:

try {
  let gender = driver.findElement(By.css("input[type=radio][value=Miss.]"))
  gender.click()
  driver.sleep(7000)
} catch (ex) {
  console.log(ex)
}

这是我使用 Blueprint 库的 React 代码:

<RadioGroup>
                  <Radio id="radio-gender-1" label="Mr." value="Mr." checked={this.state.title === "Mr."} />
                  <Radio id="radio-gender-2" label="Miss." value="Miss." checked={this.state.title === "Miss."} />
</RadioGroup>

但是当我运行测试时,它会抛出一个错误,说明:

UnhandledPromiseRejectionWarning:InvalidSelectorError:无效选择器:指定了无效或非法的选择器。

我可以填写表单中的文本框,但无法单击单选按钮。

你能帮我解决这个问题吗?

标签: reactjsselenium-webdrivercucumberjsblueprintjs

解决方案


您没有在 CSS 选择器中的属性值周围加上引号。它应该是

input[type='radio'][value='Miss.']

但是你有一个 ID,所以我不确定你为什么不使用它

By.id("radio-gender-2")

推荐阅读