c# - 无法访问单选按钮
问题描述
我有下面的 HTML,我想单击输入名称 = optUsoTabaco 的单选按钮。但我一直没有成功。
<section id="bloco-cadastro" ng-show="vm.modo.edicao || vm.modo.novo" class="">
<ul class="passos">
</ul>
<form name="formSimulador" novalidate="" class="ng-valid-pattern ng-valid-maxlength ng-valid-cpf ng-invalid ng-invalid-required ng-dirty ng-valid-parse ng-valid-date">
<p class="aviso-campos-assinalados text-muted">Os campos assinalados com * são obrigatórios.</p>
<h3 class="text-info titulo-bloco page-header">Dados do Cliente</h3>
<fieldset class="simulador small">
<input type="hidden" name="hidSimulacaoId" ng-model="vm.viewmodelsimulacao.simulacaoId" class="ng-pristine ng-untouched ng-valid ng-empty">
<fieldset ng-disabled="!vm.viewmodelsimulacao.formularioEditavel">
<div class="row passo-1" id="passoUm">
</div>
<div class="row dados-solicitante">
</div>
<div class="row dados-estudo">
</div>
<div class="row">
<div class="col-xs-12 col-sm-6 col-md-6 form-group">
<label>Sexo *</label>
<div class="radio md-radio">
<label class="separador_direita ativo"><input type="radio" value="F" ng-model="vm.viewmodelsimulacao.sexo" name="optSexo" required="" class="ng-touched ng-not-empty ng-dirty ng-valid-parse ng-valid ng-valid-required">Feminino</label>
<label class="separador_esquerda "><input type="radio" value="M" ng-model="vm.viewmodelsimulacao.sexo" name="optSexo" required="" class="ng-pristine ng-untouched ng-not-empty ng-valid ng-valid-required">Masculino</label>
</div>
<div class="has-error ng-hide" ng-show="formSimulador.$submitted || formSimulador.optSexo.$touched">
<span class="control-label ng-hide" ng-show="formSimulador.optSexo.$invalid">
Valor Obrigatório
</span>
</div>
</div>
<div class="col-xs-12 col-sm-6 col-md-6 form-group">
<label>Fumante? *</label>
<div class="radio md-radio">
<label class="separador_direita "><input type="radio" value="S" ng-model="vm.viewmodelsimulacao.fazUsoDeTabaco" name="optUsoTabaco" required="" class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required">Sim</label>
<label class="separador_esquerda "><input type="radio" value="N" ng-model="vm.viewmodelsimulacao.fazUsoDeTabaco" name="optUsoTabaco" required="" class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required">Não</label>
</div>
<div class="has-error ng-hide" ng-show="formSimulador.$submitted || formSimulador.optUsoTabaco.$touched">
<span class="control-label" ng-show="formSimulador.optUsoTabaco.$invalid">
Valor Obrigatório
</span>
</div>
</div>
</div>
</fieldset>
<!-- ngIf: vm.botoesAcao --><div class="row ng-scope" ng-if="vm.botoesAcao">
</fieldset>
</form>
</section>
我尝试使用以下代码访问名为 optUsoTabaco 的单选按钮:
driver.FindElement(By.CssSelector("#bloco-cadastro > form > fieldset > fieldset > div:nth-child(4) > div:nth-child(2) > div.radio.md-radio > label.separador_direita.ativo"));
------ x ------
driver.FindElement(By.XPath("//*[@id='bloco - cadastro']/form/fieldset/fieldset/div[4]/div[2]/div[1]/label[2]/input")).Click();
------ x ------
driver.FindElement(By.XPath("//*[@id='bloco - cadastro']/form/fieldset/fieldset/div[4]/div[2]/div[1]/label[2]")).Click();
------ x ------
IList<IWebElement> radioBtn = driver.FindElements(By.Name("optUsoTabaco"));
radioBtn.ElementAt(1).Click();
在所有这些情况下,我都收到错误消息:“WebDriver.dll 中发生‘OpenQA.Selenium.NoSuchElementException’类型的异常,但未在用户代码中处理。附加信息:没有这样的元素:无法找到元素”我在做什么错误的?
我已经尝试等待 10 秒,但并没有解决问题
解决方案
您可以使用 CSS 选择器
如果要选择 Sim 单选按钮,请使用
div.row > div > div > label > input[name="optUsoTabaco"][value="S"]
如果要选择 Não,则使用
div.row > div > div > label > input[name="optUsoTabaco"][value="N"]
推荐阅读
- encoding - 当文件编码为“无”时,如何处理 DXL 文件数据元素?
- rabbitmq - 公开 Rancher 托管应用的帖子
- python - Python 3、VS 代码和 utf-8 产生错误
- kubernetes - 我应该为 Kubernetes 健康检查实现一个专用的 api 端点吗?
- python - 创建该文件后 Heroku 上的 FileNotFoundError
- machine-learning - 使用 yolov3 进行自定义对象检测的预训练权重
- angular - 使用 NGRX 在 API 调用中更新后将项目添加到状态
- ios - 如何从目标 c 中的自定义按钮调用函数?[以编程方式]
- php - 用 JSON 中的 MYSQL 表示 PHP 中的数据
- javascript - Reactjs,源数组在组件重新加载时变为空白