0

我正在使用 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:无效选择器:指定了无效或非法的选择器。

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

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

4

2 回答 2

1

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

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

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

By.id("radio-gender-2")
于 2019-03-28T13:08:57.497 回答
0

BlueprintJS 似乎在单选按钮上添加了一个覆盖层来设置它们的样式。这会导致 Selenium 无法正确单击单选按钮。

我找到的解决方案是单击实际覆盖而不是输入,为此我使用了这个选择器:

# By.css("#inputId + .bp3-control-indicator")
于 2019-09-11T11:18:24.010 回答