Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
元素在模态窗口中不可见-Selenium Python_Python_Selenium_Modal Dialog - Fatal编程技术网

元素在模态窗口中不可见-Selenium Python

元素在模态窗口中不可见-Selenium Python,python,selenium,modal-dialog,Python,Selenium,Modal Dialog,我试图登录到一个网页,以便从中获取数据,但每次尝试时,都会发现错误元素不可见。我试图单击的元素是模式窗口中的一个按钮,但该窗口的html仅在单击登录按钮后显示。我可以单击“登录”按钮,但不能单击随后弹出的“教师”按钮。有什么想法吗 from selenium import webdriver from selenium.webdriver.common.keys import Keys login_url = 'https://edpuzzle.com/' username = '***' p

我试图登录到一个网页,以便从中获取数据,但每次尝试时,都会发现错误元素不可见。我试图单击的元素是模式窗口中的一个按钮,但该窗口的html仅在单击登录按钮后显示。我可以单击“登录”按钮,但不能单击随后弹出的“教师”按钮。有什么想法吗

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

login_url = 'https://edpuzzle.com/'
username = '***'
password = '***'
ChromeDriver = r'C:\Users\admin\Python\chromedriver.exe'

driver = webdriver.Chrome(ChromeDriver)
driver.get(login_url)
driver.find_element_by_css_selector('button.btn.btn-default-
transparent').click()
driver.find_element_by_css_selector('p.modal-title.text-lg.text-center.edp-
role-title')
driver.find_element_by_css_selector('button.btn.white-btn.btn-lg.btn-
block.big-btn.edp-teacher-role').click()

您试图在按钮实际可见之前单击它。您需要等待一段时间:

from selenium.webdriver.support.ui import WebDriverWait as wait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

driver.get(login_url)
driver.find_element_by_id('edp-login').click()
wait(driver, 10).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "button.btn.white-btn.btn-lg.btn-block.big-btn.edp-teacher-role"))).click()

只是来这里寻找解决我问题的答案。但我认为您的意思是将selenium.webdriver.common.by import by的
作为第三个导入。