Reactjs 在使用CucumberJS和Selenium进行自动测试时,是否有方法单击Blueprintjs单选组件的单选按钮?

Reactjs 在使用CucumberJS和Selenium进行自动测试时,是否有方法单击Blueprintjs单选组件的单选按钮?,reactjs,selenium-webdriver,cucumberjs,blueprintjs,Reactjs,Selenium Webdriver,Cucumberjs,Blueprintjs,我正在使用CucumberJS和SeleniumWebDriver进行自动化测试。我试图使用以下代码单击表单中的单选按钮: try { let gender = driver.findElement(By.css("input[type=radio][value=Miss.]")) gender.click() driver.sleep(7000) } catch (ex) { console.log(ex) } 这是我使用Blueprint库的React代

我正在使用CucumberJS和SeleniumWebDriver进行自动化测试。我试图使用以下代码单击表单中的单选按钮:

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>

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

未经处理的PromisejectionWarning:InvalidSelector错误:无效选择器:指定了无效或非法的选择器

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


你能帮我一下吗?

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

input[type='radio'][value='Miss.']
但是你有身份证,所以我不知道你为什么不使用它

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

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

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

# By.css("#inputId + .bp3-control-indicator")

我曾尝试使用by.id()执行此操作,但它抛出了一个错误。尝试您的建议后,仍会出现错误“点(382,325)处的元素不可单击。其他元素将收到单击:”,这意味着错误消息中指示有一个
SPAN
,阻止单击。更新您发布的HTML,不仅包括您已有的
输入
s,还包括错误消息所述的
SPAN
。看起来您需要单击右侧的
SPAN
。我正在使用BlueprintJS库中的无线电组件。跨度在调试模式下是可见的,HTML代码正是我在这里给出的。我试着点击SPAN,但它不起作用。如果你不发布更多的HTML,我帮不了你。添加错误中引用的
SPAN
,并包括您尝试单击的
输入。