python - Python Selenium WebDriverWait 不工作,driver.findElement 工作
问题描述
我正在尝试使用 Selenium 启用 RadioButton。
我正在获取按钮和文本字段以及所有这些东西
driver = webdriver.Chrome(executable_path='/usr..'
wait = WebDriverWait(driver, 10)
但是现在当涉及到单选按钮时,它突然失败了:
Traceback (most recent call last):
File "/home/jan/PycharmProjects/MailCreation/mail_creation", line 53, in <module>
creator.create(1)
File "/home/jan/PycharmProjects/MailCreation/mail_creation", line 43, in create
wait.until(EC.element_to_be_clickable((By.ID, 'id-signup-radio-email'))).click()
File "/home/jan/PycharmProjects/MailCreation/venv/lib/python3.6/site-packages/selenium/webdriver/support/wait.py", line 80, in until
raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message:
首先,我认为可能是因为 iframe,但我找不到。
我用那行代码用 id、css-selector 和 xpath 尝试了几次:
wait.until(EC.element_to_be_clickable((By.ID, 'id-signup-radio-email'))).click()
它失败了,每一次。然后我尝试了
time.sleep(3)
test = driver.find_element_by_id('id-signup-radio-email')
test.click()
它以某种方式工作得很好。为什么?我不明白。所以它真的不是让它工作,而是理解为什么。
解决方案
“我正在尝试使用 Selenium 启用 RadioButton。”
禁用的元素不可点击。尝试EC.presence_of_element_located
代替EC.element_to_be_clickable
.
所以基本上:
target element = wait.until(EC.presence_of_element_located((By.ID, 'id-signup-radio-email')))
推荐阅读
- jekyll - Mathjax 问题 - 数学符号根本没有出现
- java - 使用格式为 dd.MM.yyyy 的 Datetime 解析只有两位数年份的字符串?
- html - 如何将数字正确转换为折线点
- javascript - InnerHTML 每次都会创建新节点(新引用)
- wordpress - 如何在自定义评论表单中添加回复评论功能
- visual-studio - MSBuild:如何创建包含多个参数化的内联任务
任务 - java - 如何从 java 程序中执行 vimdiff 命令
- mysql - 如何在字段中具有0或1值的一组记录中选择,只有在mysql中存在值1的记录?
- swift - 触摸 UIButton 时未调用选择器
- android-studio - Android Studio Gradle 显示没有可用的缓存版本