2017-07-17 111 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