2016-04-14 15 views
1

私はPython 3.4.4を使用して、新しい値が追加されたときに動的に更新されるテキストエリアを持つWebサイト(https://readability-score.com/)にアクセスしています。Pythonセレニウムがテキストエリアにキーを送る

文字列をそのテキストエリアボックスに入力しようとしていますが、それは私のためには機能しません。ここで

は私がしようとしているコードです:

driver = webdriver.Firefox() 
driver.wait = WebDriverWait(driver, 2) 
URL = "https://readability-score.com/" 

text = "Hello hello hello, this is a test" 

driver.get(URL) 
time.sleep(2) 
driver.find_element_by_id("text_to_score").clear() 
driver.find_element_by_id("text_to_score").send_keys(text) 
#driver.find_element_by_xpath("/html/body/div[1]/div[6]/div/div[1]/form/fieldset/textarea").clear() 
#driver.find_element_by_xpath("/html/body/div[1]/div[6]/div/div[1]/form/fieldset/textarea").send_keys(text) 

問題はセレンドライバがに鍵を送信するためのテキストエリアを見つけることができないということです。私はそれをクリアすることができると思うので(私は文字通りあなたがページに入るときにクリアされているテキストを見ることができます)、テキストを入力することはできません。誰かがこれについて考えているだろうか?私はオンラインガイドに従ったが、リストされたすべてのオプション(http://selenium-python.readthedocs.org/)を試したような気がした。ありがとう。

+0

エラーは何ですか? –

+0

ああ、良い点。これを編集しますが、セレンドライバはテキストをテキストエリアに送ることができません。 – rj2700

+0

ええ、send_keys文の後に少し遅れを入れて、実際にテキストがテキストエリアに入っているかどうかを確認できますか? –

答えて

-1

これは私のために働く、これを試してみてください?

from selenium import webdriver 
import time 

driver = webdriver.Chrome() 
#driver.wait = WebDriverWait(driver, 2) 
URL = "https://readability-score.com/" 

text = "Hello hello hello, this is a test" 

driver.get(URL) 
time.sleep(5) 
driver.find_element_by_id("text_to_score").clear() 
driver.find_element_by_id("text_to_score").send_keys(text) 
print "Here" 
time.sleep(4) 
#driver.find_element_by_xpath("/html/body/div[1]/div[6]/div/div[1]/form/fieldset/textarea").clear() 
#driver.find_element_by_xpath("/html/body/div[1]/div[6]/div/div[1]/form/fieldset/textarea").send_keys(text) 

driver.close() 

あなたは、ウィンドウを開いたままにするdriver.close()を取り除くことができます。

+0

ページが読み込まれない場合がありますか?最初のtime.sleep()の値を増やしますか? – PYA

+0

私はちょうどクロムドライバーを使用した原因私はFirefoxの1つがインストールされていないが、私は違いを作る必要があるとは思わないが、あなたもクロムで試してみることができると思います – PYA

+0

私はdownvoteをしなかったが、 。セレンが機能するように閉じます。 – rj2700

2

You can explicitly waitテキストエリアが表示されるまで。

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


... 


url = "https://readability-score.com/" 
text = "Hello hello hello, this is a test" 

driver.get(url) 
WebDriverWait(driver, 5).until(
    EC.presence_of_element_located((By.ID, "text_to_score")) 
) # Wait until the `text_to_score` element appear (up to 5 seconds) 
driver.find_element_by_id("text_to_score").clear() 
driver.find_element_by_id('text_to_score').send_keys(text) 
+0

問題は、ドライバが要素を見つけることができないということではありません(デフォルトのテキストをクリアすることができるためです)が、テキストを入力できません。 – rj2700

+0

@ user1342086、 。それは私にとって完璧に機能します(FirefoxとChromeの両方)。ところで、セレンのパッ​​ケージのversinoを使用していますか?私は2.53.1を使用しています。 – falsetru

+0

はい、正しいかもしれません。私は上記のサンプルテキストについて嘘をつきました。実際には、openと.read()メソッドを使ってテキストファイルをインポートしています。だから、これは正しい解決策です(私はこれを試していませんでしたが、それはうまく見えます)。 – rj2700

関連する問題