私は単純なブラウザ操作を試みています。ここでは、Webサイトでユーザー名要素を見つけてログインしようとしています。私はこれを行うためにセレンとPythonを使用しています。ここに私のローカルマシンで動作する簡単なコードがあります。このコードは、コンピュータ上のブラウザを開き、正しいユーザー名ボックスに移動し、ユーザー名を入力します。私はFirefoxがポップアップする必要がないようにpyvirtualdisplayを使用してAWSのサーバー上で同じコードを展開しようとすると、 Pythonのpyvirtualdisplayとseleniumで要素が見えない
from selenium import webdriver
browser = webdriver.Firefox()
browser.get(my_url)
username_element = browser.find_elements_by_name("USERNAME")[0]
username_element.clear()
username_element.send_keys(my_username)
はしかし、それはもはや機能しません。
from pyvirtualdisplay import Display
from selenium import webdriver
display = Display(visible=0, size=(800, 600))
display.start()
browser = webdriver.Firefox()
browser.get(my_url)
username_element = browser.find_elements_by_name("USERNAME")[0]
username_element.clear()
username_element.send_keys(my_username)
要素が確実に見つけましたが、私は要素は見えないエラーを取得している:
によって確認されselenium.common.exceptions.ElementNotVisibleException: Message: Element is not currently visible and so may not be interacted with
:私は上見られる様々なものを試してみた
>> username_element.is_displayed()
False
SOを含むSO:
- xvfb a ND
から、これを解決する方法上の任意のアイデアをbrowser.implicitly_wait(30)
WebDriverWait(browser,30).until(EC.visibility_of_element_located((By.NAME, "USERNAME")))
た回を追加すること
これは機能しませんでした。私はまだ目に見える例外ではない。私は、ユーザー名ボックスはページの上部にあるので、スクロールの問題ではないように見えるはずです。 – plam
あなたはスクリーンショットを撮って、 'browser.save_screenshot( 'screen.png')' –
のページに要素がないことを確認できます。それは実際に私がそれを理解するのを助けました。画面サイズが十分に大きく設定されていなかったことがわかります。 – plam