python - Selenium find element_by_id 不适用于单选按钮

标签 python selenium radio-button

所以我一直在 Python 中使用 Selenium。我完成了我的代码(当时有效),但突然它选择不再工作。 再具体一点: 如果我尝试:

driver.find_element_by_id("leasingtrue").click()

它返回给我错误:

selenium.common.exceptions.ElementNotInteractableException: Message: Element <input id="leasingfalse" name="IsLeasing" type="radio"> could not be scrolled into view

另一方面,如果我通过 XPath 找到该元素,它就会按预期工作。 该错误仅在类型为“radio”时发生,但在每个类型上都一致。

由于完整的代码大约有 600 行长,我不打算将其中的每一行都更改为 XPath。 另一条相关信息: 因为我正在使用 PyCharm,所以我可以恢复到以前肯定有效的版本。 但现在,它也给了我同样的错误。有谁知道这个错误可能与什么有关?

我正在抓取的网站是:https://www.comparis.ch/autoversicherung/berechnen?carmake=41 。 我正在使用 Python 2.7 和 Selenium 3.8 相关的 HTML 是:

<div class="item-selectable xsmall-6 columns">

<input data-val="true" data-val-required="Bitte wählen Sie eine Antwort aus." data-vertical-alignment="middle" id="leasingtrue" name="IsLeasing" type="radio" value="true" aria-required="true" aria-invalid="false" aria-describedby="IsLeasing-error">
<label for="leasingtrue">Ja</label>

</div>

最佳答案

因为您操作的元素不是单选按钮,而是切换按钮,由CSS + 单选按钮+标签实现。

enter image description here

从用户界面中,我们可以看到单选按钮被标签覆盖,因此您无法单击单选按钮来选择切换按钮,而是单击标签来执行此操作。

driver.find_element_by_css_selector("input#leasingtrue + label").click();

关于python - Selenium find element_by_id 不适用于单选按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48746229/

相关文章:

java - 如何从 Selenium WebDriver 的下拉列表中获取所有元素?

html - Twitter Bootstrap 单选按钮不起作用

javascript - 嵌套 ng-repeat 中的单选按钮

python - 在两个连续执行的函数之间添加延迟

python - 将数据传递给 subprocess.check_output

java - 如何在 Jenkins 中配置 Selenium HTML 报告

javascript - 当单选值 ="No"且两个单选都未被选择时,jQuery 识别页面加载时单选按钮的不正确状态

python - 从 Python 运行 R 脚本

python - getattr() 的简洁方法,如果在 Python 中不是 None 则使用它

java - 如何从 Appium 中的推送通知获取 JSON 数据?