【问题标题】:I can't get Selenium radiobutton access, given a error给定错误,我无法访问 Selenium 单选按钮
【发布时间】: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


【解决方案1】:

我相信你的问题是我所怀疑的。您的单选按钮不可点击,因为它被禁用(隐藏)。您的单选按钮元素被隐藏的 div 包围:

<div class="p-hidden-accessible">
    <input type="radio" id="produktRisiko_7" name="produktRisiko" value="8" aria-checked="false">
</div>

我不确定你想做什么,但你必须弄清楚为什么这个div 被隐藏了。希望这能给您一些见解,但您需要更好地解释您的问题。你想做什么?你真的能看到页面上的按钮吗?如果您在页面上看不到单选按钮,则不应尝试使用某种后门机制(即调用 JavaScript 命令)与组件进行交互,因为我认为这些测试的目的是测试人机交互。

【讨论】:

  • 是的,我可以看到并使用单选按钮。我认为问题在于它是隐藏的,正如你所说。谢谢
【解决方案2】:

我用以下结构解决了我的问题。感谢您的关注

((JavascriptExecutor) driver).executeScript("document.getElementById('produktRisiko_7').click();");

【讨论】:

    猜你喜欢
    • 2013-09-01
    • 2012-04-18
    • 1970-01-01
    • 2021-10-28
    • 1970-01-01
    • 1970-01-01
    • 2012-03-09
    • 2021-03-31
    • 1970-01-01
    相关资源
    最近更新 更多