Python Selenium-无法单击隐藏元素
我正在使用Selenium和Python。我正在努力使用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"
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();