2017-11-25 144 views
2

我有困難www.meridiancu.ca訪問下拉菜單。這是在主頁右側的「選擇銀行類型」下的那個。一旦我運行我的代碼。硒發現隱藏的元素

from selenium import webdriver 
from selenium.webdriver.common import action_chains, keys 
import time 

driver = webdriver.Chrome() 
driver.maximize_window() 
driver.get("http://www.meridiancu.ca") 

bank_type = driver.find_element_by_id('SelectAccount') 
bank_type.click() 

我得到以下輸出,我不知道如何找到這個「隱藏」元素。

DevTools listening on ws://127.0.0.1:12015/devtools/browser/6f5fba77-4c41-49b9-93a3-64a8363cd35b 
Traceback (most recent call last): 
    File "C:\Users\Imad\Documents\Programming\Python\dropdown select.py", line 14, in <module> 
    bank_type.click() 
    File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webelement.py", line 80, in click 
    self._execute(Command.CLICK_ELEMENT) 
    File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webelement.py", line 501, in _execute 
    return self._parent.execute(command, params) 
    File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 308, in execute 
    self.error_handler.check_response(response) 
    File "C:\Python27\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 194, in check_response 
    raise exception_class(message, screen, stacktrace) 
selenium.common.exceptions.ElementNotVisibleException: Message: element not visible 
    (Session info: chrome=62.0.3202.94) 
    (Driver info: chromedriver=2.33.506120 (e3e53437346286c0bc2d2dc9aa4915ba81d9023f),platform=Windows NT 10.0.16299 x86_64) 

任何建議或解決方案將不勝感激。

+0

是我的回答有幫助嗎?如果是 - 請在我的答案附近檢查一下打勾。 –

回答

2

與選擇標籤的工作下面的代碼:

from selenium.webdriver.support import ui 

ui.Select(driver.find_element_by_css_selector(".sign-in-panel.sign-in-banner #SelectAccount")).select_by_visible_text("Small Business Banking") 

結果:「小型企業銀行」的選項應該從下拉列表中選擇。

希望它可以幫助你!

+0

非常感謝,Ratmir!這實際上有很大幫助。我將使用這個和理查德的答案作爲未來問題的參考。 –

+0

@ImadKalboneh,如果有幫助的話 - 請檢查我的答案附近的打勾。 –

+0

對於遲到的回覆感到抱歉。我是新來的使用我的帳戶,但現在完成:)所有最好的 –

2

您遇到的問題是,你的選擇是找到匹配的2個元素。匹配的第一個元素是隱藏的。當移動瀏覽器查看頁面時會顯示隱藏元素。

我做了一些調查,發現下面的CSS選擇器會發現你正在尋找的元素。

bank_type = find_element_by_css_selector('.show-for-large select#SelectAccount.banking-target') 
+0

非常感謝,理查德!它確實幫助了很多!我知道這個選項存在,但從來不知道如何實際使用它。我會用這個和Ratmir Asanov的回答作爲未來的參考:) –

0

你也可以做迭代了下來丟棄所有的選項,使用下面的代碼片段。

el = driver.find_element_by_id('SelectAccount') 
for option in el.find_elements_by_tag_name('option'): 
    if option.text == 'Personal Banking': 
     option.click() # select() in earlier versions of webdriver 
     break 
+0

我曾嘗試過,但不幸的是,這導致我出現同樣的錯誤。我現在明白了,謝謝:) –