2017-07-17 79 views
1

我点击一个超链接,点击打开一个弹出窗口。我想输入用户名和密码,然后点击登录按钮,但我得到一个不可见元素的错误。我的用户名和密码字段越来越填充,但在按钮日志点击它给错误python硒错误日志弹出窗口

driver = webdriver.Chrome() 
driver.get('https://www.website/') 

window_before=driver.window_handles[0] 
print('window before', window_before) 
driver.find_element_by_class_name("LoginModal").click() 
window_after= driver.find_element_by_class_name("loginwindow_2") 

print('window after', window_after) 

driver.find_element_by_id("username").send_keys("Enter") 

driver.find_element_by_id("password").send_keys(" password here") 

它填充用户名和密码正确,但是当我输入这一点,给我一个错误。

driver.find_element_by_class_name("bluebutton2") 

错误

File "C:/Users/myfile/mucode.py", line 21, in 
<module> 

selenium.common.exceptions.ElementNotVisibleException: Message: element not visible 
    (Session info: chrome=59.0.3071.115) 
    (Driver info: chromedriver=2.30.477700 (0057494ad8732195794a7b32078424f92a5fce41),platform=Windows NT 6.1.7601 SP1 x86_64) 

谢谢

回答

0

有页面上的3个元素的类名称为"bluebutton2"。第一个是隐藏的,这就是为什么你得到ElementNotVisibleException。你只需要使用更具体的选择器来匹配所需的元素。尝试下面:

driver.find_element_by_css_selector('td[valign="middle"]>button.bluebutton2').click() 

更新

要处理,你可以使用下面的代码等待一段时间,避免ElementNotVisibleException输入字段:

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 

wait(driver, 10).until(EC.visibility_of_element_located((By.ID, "username"))).send_keys("Enter") 
wait(driver, 10).until(EC.visibility_of_element_located((By.ID, "password"))).send_keys("password here") 
+0

嗨,现在它是给错误的以下行说法元素在那里找不到>>>>>>>>>>> driver.find_el ement_by_id(“username”)。send_keys(“Enter”) – Analyst

+0

你能帮我解释那行代码吗? – Analyst

+0

你的意思是'NoSuchElementException'?在'driver.find_element_by_id(“username”)。send_keys(“Enter”)'? – Andersson

0

试试这个,可能不起作用,我假设你正在试图点击登录按钮

driver.execute_script('arguments[0].click();', driver.find_element_by_class_name('bluebutton2')) 
+0

嗨,这并不工作,但现在它给我同样的错误元素不可见在这条线>>>>>>>>>>>>> driver.find_element_by_id(“username”)。send_keys(“Enter”) – Analyst