2017-02-09 19 views
-1

私はPythonを使用してSelenium webdriverを学習しようとしています。テストケース用コード:send_keysは入力テキストの後に入力しません

import unittest 

#import time 

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 
from selenium.webdriver.common.by import By 
#from selenium.webdriver.common.action_chains import ActionChains 


class FindRouteToBerlin(unittest.TestCase): 
    # Start Firefox 
    def setUp(self): 
     self.driver = webdriver.Firefox() 

    def test_find_route_to_berlin(self): 
     driver = self.driver 
     # Open HERE Maps 
     driver.get('http://wego.here.com') 
     self.assertIn("HERE WeGo", driver.title) 
     # Go to Search field and fill with city 
     search = driver.find_element_by_xpath('//*[@id="searchbar"]/div/div/input') 
     search.send_keys('Berlin') 
     search.send_keys(Keys.RETURN) 
     # Press "Arrow" 
     arrow = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, '/html/body/div[1]/div[6]/div/div/div[1]/div[2]/button'))) 
     arrow.click() 
     # Enter address 
     address = driver.find_element_by_xpath('//*[@id="itinerary_item_input_0"]') 
     address.send_keys('Szczecin') 
     address.send_keys(Keys.RETURN) 

     """actions = ActionChains(driver) 
     actions.move_to_element(address) 
     actions.send_keys(Keys.RETURN) 
     actions.perform()""" 

    #def tearDown(self): 
    # self.driver.quit() 

if __name__ == "__main__": 
    unittest.main() 

「ベルリン」というテキストを入力して最初のステップは問題なく動作します。しかし、2番目のステップが来たら、Keys.RETURNは入力 "Szczecin"の後に実行されません。

ActionChainsでこの問題を解決しようとしていましたが、.perform()の後に私はエラーがあり、これらの問題はSelenium/Mozillaのバグに関連していると読んでいます。

ActionChainsのための私のコードは:

actions = ActionChains(driver) 
    actions.move_to_element(address) 
    actions.send_keys(Keys.RETURN) 
    actions.perform() 

Error: Message: POST /session/1caed99c-1577-4f1d-804b-4ee397d8750b/moveto did not match a known command

任意の提案をどのように私はこの問題を解決することができますか?

+0

がsend_keysを使用してみてください(U「\ ue007」)返信の代わりに –

+0

@MarcvT私はsend_keys(u '\ ue007')でも試しましたが、動作は同じです。宛先のヒントとともにリストを展開するだけです(send_keys(Keys.RETURN)の振る舞いは同じです)。私もsend_keys(Keys.ENTER)で試しました – bMh

+1

'Actions'は' Marionette'にまだ実装されていません。 'ActionChains'を使用する必要がある場合は' chromedriver'を試してみましょうか、 'ActionChains'コード行を同様のコード – Andersson

答えて

0

あなたはKeys.RETURNを使用して、ドロップダウン提案の代わりからの最初の要素を選択しようとすることができます

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

address = driver.find_element_by_xpath('//*[@id="itinerary_item_input_0"]') 
address.send_keys('Szczecin') 
first_suggestion = wait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//div[contains(@class, 'dropdown_list_item')]"))) 
first_suggestion.click() 
+0

問題は、私のコマンド 'address.send_keys(Keys.RETURN)'ドロップダウンリストが展開された後である。しかし、後に何かを追加すると、それは隠れたままです。 コード最後にsendキーを付けた後に追加したコードは、 'select_element = WebDriverWait(driver、10).until(EC.visibility_of_element_located((By.XPATH、 '// * [@ id =" itinerary_item_1 "]/div select_element.click() ' – bMh

+0

都市名を入力フィールドに送信した直後にドロップダウンが表示されます。返り値を使用する必要はありません – Andersson

+0

ドロップダウンは、私が入力フィールドに入力すると表示されます。[2]/div [1]このマニュアルを実行してみてください。私のスクリプトでは、このリストはスクリプトがすべてのステップを完了したときにのみ表示されますが、send_keyはENTERを実行しません。この状況でsend_keysが正しく動作しないケースが考えられます。 – bMh

0

私のために働いて、次のとおりです。

from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.common.keys import Keys 
from selenium.webdriver.support.ui import Select 

def setUp(): 
    driver = webdriver.Chrome() 

    driver.maximize_window() 

    driver.implicitly_wait(30) 

    base_url = ('enter your url') 

    driver.get(base_url) 

    task = driver.find_element_by_id("some_element_id") 

    task.send_keys("Some_text",Keys.ENTER) 


setUp() 
関連する問題