2017-07-11 146 views
0
import webbrowser 
from selenium import webdriver 

browser = webdriver.Chrome() 
browser.maximize_window() 
browser.get('https://www.suntrust.com/') 
browser.implicitly_wait(15) 
elem = browser.find_element_by_css_selector('input#sign-on-3A69E29D-79E0- 
              403E-9352-5261239ADD89-user') 
elem.click().send_keys('your-username') 

元素不可見異常錯誤消息:蟒蛇硒元素不可見異常

enter image description here

我試圖自動登錄到登錄/密碼的領域,但我不斷收到此錯誤信息。

我已經嘗試了各種「find_element_by」定位器,但推薦這一個,所以我不認爲css選擇器是問題。我究竟做錯了什麼?

+0

嘗試:elem.send_keys(「your_username」) –

回答

0

這裏是回答你的問題:

css_selector構建你是不是唯一的,並符合對HTML DOM 2個元素。第一場比賽是看不見的,而第二場比賽是我們預期的要素。硒正試圖點擊第一個元素。因此錯誤。這是你自己的代碼修改css_selector它在我的最終效果很好:

from selenium import webdriver 
from selenium.webdriver.chrome.options import Options 

options = Options() 
options.add_argument("start-maximized") 
options.add_argument("disable-infobars") 
options.add_argument("--disable-extensions") 
browser = webdriver.Chrome(chrome_options=options, executable_path="C:\\Utility\\BrowserDrivers\\chromedriver.exe") 
browser.get('https://www.suntrust.com/') 
browser.implicitly_wait(15) 
elem = browser.find_element_by_css_selector('section[role="main"] input[id="sign-on-3A69E29D-79E0-403E-9352-5261239ADD89-user"]') 
elem.send_keys('your-username') 

讓我知道如果這個回答你的問題。

+0

沒有特別爲我工作,但我的問題在別處回答感謝您的反饋。 – Newbbit

+0

@Newbbit你可以檢查我更新的答案嗎?它在我的最後工作。謝謝 – DebanjanB

+0

這樣做的伎倆,它現在的作品。謝謝! – Newbbit

0

它通常發生是因爲dom不會加載並且Selenium腳本試圖找到該元素。請確保此元素不在Iframe內。使用硒顯式等待,直到元素加載,然後對該按鈕執行操作。你必須在Python中做這樣的事情。下面的代碼只是創建一個等待的對象,然後等待元素加載並執行下一步

from selenium.webdriver.support.ui import WebDriverWait 


    myElem = WebDriverWait(browser, delay).until(EC.presence_of_element_located((By.ID, 'IdOfMyElement'))) 
    print "Page is ready!" 
except TimeoutException: 
    print "Loading took too much time!"