2016-12-18 5 views
2

Webページに次の要素があります。Selenium PythonでJavascriptで作成された要素を選択してください

<button type="submit" class="zsg-button_primary contact-submit-button track-ga-event" data-ga-category="contact" data-ga-action="email" data-ga-label="rentalbuilding" data-ga-event-content="false" data-ga-event-details="" id="yui_3_18_1_2_1482045459111_1278"> 
    <span class="zsg-loading-spinner hide"></span> 
    <span class="button-text" id="yui_3_18_1_2_1482045459111_1277">Contact Property Manager</span> 
</button> 

私が使用してBeautifulsoupと、この要素を見つけることができます。

e = soup.find('button', attrs={'class' : 'zsg-button_primary'}) 

をしかし、私は使用してセレンをしようとすると:

driver.find_element_by_class_name("zsg-button_primary").click() 

を私は次のエラーを取得する:

selenium.common.exceptions.ElementNotVisibleException: Message: element not visible 

これは、 eの要素がJavascriptで作成されていて面白いことをしていますが、画面上で見ることができます。それを取得する方法がわからないので、クリックできます。どんな助けも大歓迎です。

EDIT

私はセレンのJavascriptのためであるthis answerに向かって指摘してきました。私はPythonでこれを行う必要があります誰も助けることができます。

+0

可能な複製(http://stackoverflow.com/ [現在表示されていない要素をクリックするセレンwebdriverを強制する方法?]質問/ 6101461/how-to-force-selenium-webdriver-to-click-on-non-currently-visib) –

答えて

1

あなたの要素は、以下に見えるようになるまで待つようにしてください:の

from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 

WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, '//button[@class="zsg-button_primary contact-submit-button track-ga-event"]'))) 
+0

確かに、それはBeautifulSoupによって取得されているので既に表示されていますか? – HenryM

+0

@HenryM、実際には、 'bsp'はスクラップした' HTML'ソースを処理し、 'selenium'はブラウザウィンドウを処理します。存在がページソースに表示されていても、その要素が表示されているわけではありません。 – Andersson

+0

プロンプトが表示されないと表示されないようにするにはどうすればいいですか? – HenryM

関連する問題