Pythonを使用してフォームコントロール/ドロップダウンにテキストを挿入してこのエラーを解決するにはどうすればよいですか?

mantles1984

Python使用して最初のWebスクレイピングプロジェクトを実行しようとしていますFirefox私はとを使用Python version 3.7.4していFirefox Developer 71ます。どちらも64ビットで、私はを使用していWindows 10ます。

問題は、を介してこのフォームコントロールにアクセスしようとしていることpythonです。最終的には、フォームコントロールにテキストを挿入してから、結果をWebスクレイピングしたいと思います。ただし、オブジェクトを取得するのが難しいため、現時点ではオブジェクトをクリックしようとしています。

これが私のコードです:

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.ui import WebDriverWait
import time

driver = webdriver.Firefox()
driver.get("https://www.website.com/login/")

jcode_form = driver.find_element_by_id('ndcCode')
hov = ActionChains(driver).move_to_element(jcode_form)
time.sleep(6)  
hov.click()  
hov.perform()  

私が受け取っているエラーは次のように述べています。

WebDriverException:メッセージ:TypeError:rect isundefined

これが私のブラウザに表示されているものです

私が操作しようとしているオブジェクトは、上部のフォームコントロールです。

アクションチェーンとスリープ機能を使用してさまざまな方法でこれをトラブルシューティングしようとしましたが、エラーメッセージが表示され続けます。

どんな助けや提案も大歓迎です。ありがとうございました。

クリスティン

ここではsend_keys()、Javascript、または両方の組み合わせなどいくつかの異なることを試してみますまず、ロケーターをよりユニークなものに変更したいと思います。IDndcCodeはページ上で複数回使用される場合と使用されない場合があり、複数の要素を見つけると、予期しない結果がスローされます。これは次のように確認できます。

elements_count = driver.find_elements_by_id("ndcCode")
print(str(len(elements_count))

「1」が出力されない場合は、ロケーター戦略をより具体的なものに更新する必要があります。とにかく、次のコードサンプルには更新された戦略を使用します。

最初のアプローチは単純で、click()その後にsend_keys():が続きます。

jcode_form = driver.find_element_by_xpath("//input[contains(@placeholder, 'Start typing a Code, Drug, Product')]")
jcode_form.click()
jcode_form.send_keys("someText")

これは最も基本的なアプローチですが、最初にこれを除外するのが最善です。次に、Javascriptアプローチを試して、同じアクションを実行します。

jcode_form = driver.find_element_by_xpath("//input[contains(@placeholder, 'Start typing a Code, Drug, Product')]")
driver.execute_script("arguments[0].click();", jcode_form) # perform click
driver.execute_script("arguments[0].value = 'someText';", jcode_form) # set the value

これらのコードサンプルのいずれかを試した後、あなたの結果を聞くことに興味があります。それらがうまくいかない場合は、この回答にコメントして、発生しているエラーをお知らせください。可能であれば、これらのコードサンプルのデバッグとテストを試みることができるように、テスト対象のURLを確認したいと思います。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ