【发布时间】:2022-01-08 02:57:32
【问题描述】:
为单选按钮定义的 ID
<tr _ngcontent-icx-c221="" class="ng-star-inserted" style=""><td _ngcontent-icx-c221="" style="width: 4rem; border-width: 1px; text-align: center;"><div _ngcontent-icx-c221="" class="flex justify-content-start align-items-center ng-star-inserted"><p-radiobutton _ngcontent-icx-c221="" name="produktRisiko" class="mr-1 ng-untouched ng-pristine ng-valid" ng-reflect-name="produktRisiko" ng-reflect-input-id="produktRisiko_7" ng-reflect-value="8" ng-reflect-model="4"><div ng-reflect-ng-class="[object Object]" class="p-radiobutton p-component"><div class="p-hidden-accessible"><input type="radio" id="produktRisiko_7" name="produktRisiko" value="8" aria-checked="false"></div><div ng-reflect-ng-class="[object Object]" class="p-radiobutton-box"><span class="p-radiobutton-icon"></span></div></div><!--bindings={}--></p-radiobutton><span _ngcontent-icx-c221="" class="flex align-items-center">6</span></div><!--bindings={
"ng-reflect-ng-if": "true"
}--></td><td _ngcontent-icx-c221="" style="border-width: 1px;"> Consequential damage on main parts, (repairable on location with </td></tr>
我的代码是:
wait.until(ExpectedConditions.elementToBeClickable(By.id("produktRisiko_7"))).click();
错误:
Expected condition failed: waiting for element to be clickable: By.id: produktRisiko_7 (tried for 50 second(s) with 500 milliseconds interval)
【问题讨论】:
-
以后复制粘贴文字而不是贴图。我在那里看到的是
"produktRisiko_7",但我认为_6存在。如果不查看 DOM,很难找出问题所在。您需要解释“无法访问”的含义。例如,您遇到的错误是什么?也许单选按钮被禁用,所以它永远不会进入“可点击”状态。这个问题的答案只有你自己知道。 -
ID produktRisiko_7 总是一样的?
-
使用
visibilityOfElement而不是elementToBeClickable -
@NandanA 如果意图是单击单选按钮,使用
visibilityOfElement不仅没有意义,而且是错误的做法。 -
为了满足预期的条件,它必须为假才能开始等待。所以试试
driver.findElement(By.id("produktRisiko_7")).click();吧。
标签: java selenium selenium-webdriver