2017-11-28 4 views
0

私は、ブラウザを開いて、Pythonスクリプトに 私のコードを使用してボタンをクリックしてください:Pythonの:セレクタ

from selenium import webdriver 
browser = webdriver.Chrome('/usr/local/bin/chromedriver') 
browser.get('xxx') 
browser.implicitly_wait(5) 

button = browser.find_element_by_css_selector('#softGateBox > div.button_softgate > a') 
button.click() 

ウェブサイトが開き要素を見つけることができません。 5秒間待ってからエラーが表示されます。

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"#softGateBox > div.button_softgate > a"} 

何が問題なのですか?私はクロムを使ってボタンを調べ、右クリックしてコピーセレクタをクリックします。

+1

より良いショー本物のurl'「URL」 '我々は、このページをチェックすることができますを行うことができないので、それはあなたがページをロードするたびに変化し、 – furas

+0

は多分短いセレクターで始まります#softGateBox'を実行して、プログラムがそれを見つけることができるかどうかを確認します。 – furas

+0

@furasあなたの助けてくれてありがとうございましたが、うまくいきませんでした。 – DenCowboy

答えて

1

  • 要素はそう、あなたが要素
  • はそう最初に、外部を見つける必要があり、外部にある検索することができます前に、とswitch_to_frame()を見つける必要があり内にある、このページにはいくつか問題がありますおよびswitch_to_frame()を検索する前に、内部の検索を開始してください
  • 小さなモニター要素では表示されないため、Seleniumがクリックできます。ページを要素にスクロールしてからクリックすることができます。

。ところで

from selenium import webdriver 

browser = webdriver.Chrome() #'/usr/local/bin/chromedriver') 

browser.get('https://www.facebook.com/SparColruytGroup/app/300001396778554?app_data=DD722A43-C774-FC01-8823-8016BFF8F0D0') 
browser.implicitly_wait(5) 

iframe = browser.find_element_by_css_selector('#pagelet_app_runner iframe') 
browser.switch_to_frame(iframe) 

iframe = browser.find_element_by_css_selector('#qualifio_insert_place iframe') 
browser.switch_to_frame(iframe) 

button = browser.find_element_by_css_selector('#softGateBox > div.button_softgate > a') 
browser.execute_script("arguments[0].scrollIntoView(true);", button) 

button.click() 

:あなたはdireclty selector('iframe')を行うことはできませんので、

ページ上の他のが存在する場合があります。

内部フレーム `idを持っていますが、代わりにselector('iframe#some_uniqe_id')