Python Selenium-无法单击隐藏元素

Python Selenium-无法单击隐藏元素,python,selenium,selenium-webdriver,automated-tests,Python,Selenium,Selenium Webdriver,Automated Tests,我正在使用Selenium和Python。我正在努力使用click()方法来单击动态创建的单选按钮。下面是收音机的标记 <input version="2" value="1" class="linked-ftb-radio meta(controlNumber=2)" id="radio_1" name="IndexString" reference="TEST 01" type="radio"> <label for="radio_1" id="linked-label"

我正在使用Selenium和Python。我正在努力使用
click()
方法来单击动态创建的单选按钮。下面是收音机的标记

<input version="2" value="1" class="linked-ftb-radio meta(controlNumber=2)" id="radio_1" name="IndexString" reference="TEST 01" type="radio">
<label for="radio_1" id="linked-label" class="radio-label"></label>
但是,会产生以下错误:

Traceback (most recent call last):
  File "index.py", line 41, in <module>
    driver.find_element_by_xpath('//*[@id="radio_1"]').click()
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/selenium/webdriver/remote/webelement.py", line 74, in click
    self._execute(Command.CLICK_ELEMENT)
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/selenium/webdriver/remote/webelement.py", line 457, in _execute
    return self._parent.execute(command, params)
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/selenium/webdriver/remote/webdriver.py", line 233, in execute
    self.error_handler.check_response(response)
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/selenium/webdriver/remote/errorhandler.py", line 194, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementNotVisibleException: Message: Element is not currently visible and so may not be interacted with
回溯(最近一次呼叫最后一次):
文件“index.py”,第41行,在
驱动程序。通过_xpath('/*[@id=“radio_1”]”查找_元素。单击()
文件“/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site packages/selenium/webdriver/remote/webelement.py”,第74行,单击
self.\u执行(命令。单击\u元素)
文件“/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site packages/selenium/webdriver/remote/webelement.py”,第457行,在
返回self.\u parent.execute(命令,参数)
文件“/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site packages/selenium/webdriver/remote/webdriver.py”,执行中第233行
self.error\u handler.check\u响应(响应)
文件“/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site packages/selenium/webdriver/remote/errorhandler.py”,第194行,在check_响应中
引发异常类(消息、屏幕、堆栈跟踪)
selenium.common.exceptions.ElementNotVisibleException:消息:元素当前不可见,因此可能无法与之交互
当按下标签时,通过改变图像,收音机似乎是模拟的。换句话说,单击时,类将更改为所选的
无线电标签


如何使用Selenium单击单选按钮,记住它当前不可见?

尝试
显式条件
等待元素显示。(如果是与时间相关的问题,即需要时间显示)

这将在抛出TimeoutException之前等待10秒,或者如果它出现在页面的DOM上并且可见,将在0-10秒后返回它。默认情况下,WebDriverWait每500毫秒调用一次ExpectedCondition,直到它成功返回。对于所有其他ExpectedCondition类型,成功返回的值为布尔返回true或非null

参考:

  • C#

    您可以使用waterto元素使其变得可见,如下所示:

    var element = Waiter.Until(ExpectedConditions.ElementIsVisible(By.Id("ID"))).FirstOrDefault();
    

    如果在单击之前添加暂停,会发生什么情况?(这不是解决方案,只是进一步的调试步骤)我想点击标签会选中复选框,您应该作为
    驱动程序。通过
    ,然后告诉我。。
     element = WebDriverWait(driver, 10).until(
        EC.visibility_of_element_located((By.XPATH, "//*[@id='radio_1']"))
     element.click()
    
    var element = Waiter.Until(ExpectedConditions.ElementIsVisible(By.Id("ID"))).FirstOrDefault();