这是一个简单的例子:
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://www.dcor.state.ga.us/GDC/Offender/Query")
button = driver.find_element_by_id('submit2')
无论我等待多长时间(与先前的问题和答案不同-页面加载后很长一段时间),最后一个命令都会失败,但是当我进入浏览器本身(Selenium创建的实例)时,绿色的“我同意”按钮的ID为Submit2(右键单击->检查元素)...
是什么原因导致这种现象?
我如何使其工作?
答案 0 :(得分:1)
这是因为表单位于iframe内,因此您需要在定位元素之前切换到该框架:
driver.switch_to.frame('iframe-content')
答案 1 :(得分:0)
所需元素位于<iframe>
中,因此您需要:
代码块:
WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.ID,"iframe-content")))
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.oq-sub.btn.btn-success#submit2"))).click()