2017-11-25 9 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

selectタグでの作業のため、以下のコード:

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

ありがとう、ラットミル!これは実際に多くの助けになります。私はこれと将来の問題の参考にリチャードの答えを使用します。 –

+0

@ImadKalboneh、それが参考になった場合 - 私の答えの近くにチェックを入れてください。 –

+0

遅く返事を申し訳ありません。私はこれで自分のアカウントを使用するのは初めてですが、今行っています:)すべて最高です –

2

あなたが遭遇している問題は、セレクタが一致する2つの要素を見つけていることです。一致する最初の要素は非表示です。隠し要素は、ページがモバイルブラウザによって表示されるときに表示されます。

私は調査をいくつか行い、次のCSSセレクタがあなたが探している要素を見つけることがわかりました。

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

ありがとう、リチャード!それは実際に多くの助けになりました!私はオプションが存在することを知っていましたが、実際にそのオプションを使用する方法を知りませんでした。私はこれと将来の参照のためのラトミル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

私はそれを以前に試みましたが、残念ながら、それは私に同じエラーにつながります。私は今それを得た、ありがとう:) –