2017-03-17 53 views
1
selenium 3.0.2 
safari 10 (using built in safari driver) 
python 2.7.10 
OSX 10.11.16(El Capitan) 

如何執行按鍵事件(左/右/上/下)不止一次使用 send_keys(Keys.Right)(即試圖使用按鍵重複按鍵操作移動焦點)如何在safari中執行相同的按鍵事件?

實施例:無法使用代碼波紋管進入右鍵三次。

driver.find_element_by_xpath("//body").send_keys(Keys.RIGHT) 
driver.find_element_by_xpath("//body").send_keys(Keys.RIGHT) 
driver.find_element_by_xpath("//body").send_keys(Keys.RIGHT) 

目前沒有錯誤,只是第二個按鍵事件沒有被執行。但是,如果在序列中發送了另一個方向鍵,則該方向鍵可以正常工作,但是一旦使用了按鍵方向,則相同的方向鍵在同一個safari驅動程序會話中不起作用。

示例:如果下面是在序列中的單個的Safari驅動會話執行,則:

driver.find_element_by_xpath("//body").send_keys(Keys.RIGHT) #Works 
driver.find_element_by_xpath("//body").send_keys(Keys.RIGHT) #Doesn't Work 
driver.find_element_by_xpath("//body").send_keys(Keys.LEFT) #Works 
driver.find_element_by_xpath("//body").send_keys(Keys.LEFT) #Doesn't Work 

實施例:

driver.find_element_by_xpath("//body").send_keys(Keys.RIGHT) #Works 
driver.find_element_by_xpath("//body").send_keys(Keys.LEFT) #Works 
driver.find_element_by_xpath("//body").send_keys(Keys.RIGHT) #Doesn't Work 
driver.find_element_by_xpath("//body").send_keys(Keys.UP) #Works 
driver.find_element_by_xpath("//body").send_keys(Keys.LEFT) #Doesn't Works 

預期結果:焦點應該在相同的方向上移動儘可能多的次發送鍵方法被調用。 婁按鍵事件應在safari10瀏覽器中選擇移動到右邊的三個選擇和兩個選擇往下兩個選擇到左。

實施例:

driver.find_element_by_xpath("//body").send_keys(Keys.RIGHT) 
driver.find_element_by_xpath("//body").send_keys(Keys.RIGHT) 
driver.find_element_by_xpath("//body").send_keys(Keys.RIGHT) 
driver.find_element_by_xpath("//body").send_keys(Keys.DOWN) 
driver.find_element_by_xpath("//body").send_keys(Keys.DOWN) 
driver.find_element_by_xpath("//body").send_keys(Keys.LEFT) 
driver.find_element_by_xpath("//body").send_keys(Keys.LEFT) 

實際結果: 焦點將向右移動一次。第二次按鍵甚至不會移動焦點,如果它在相同的方向。

注:上面的示例和步驟,工作正常的Firefox瀏覽器。

+0

你見過auto.py還是機器人? – Hum4n01d

+0

還沒有嘗試過,使用python的UnitTest框架。 –

回答

0

嘗試觀看機械化是模擬瀏覽器庫,有很多動作,你可以做。 反正儘量把兩個命令之間的延遲,因爲它可能是像你這樣到現在

+0

我已經嘗試添加等待,但它仍然無法正常工作。 –

+0

嗯,我認爲這是更好,如果你嘗試學習更好的Safari瀏覽器的文檔,因爲我可以假設,野生動物園塊這種順序訪問,但我不知道,反正更好地瞭解野生動物園仍然可以是一個好主意 – duca

+0

感謝您試用杜卡。我會盡力挖掘safari selenium文檔。 –

0

嘗試使用actionChains瀏覽器無法讀取立即響應:

from selenium.webdriver.common.action_chains import ActionChains 
actions = ActionChain(element) 
actions.send_keys(Keys.RIGHT) # actions are appened in a sort of waiting list 
actions.send_keys(Keys.RIGHT) 
actions.perform() # then they are executed 
+0

謝謝,但已經試過了。同樣的行爲,它不允許在同一方向上的多個鍵擊 –

0

這聽起來像send_keys事件被視爲當沒有key_up多次應用它們沒有什麼效果被觸發之間key_down事件。這聽起來像是Safari驅動程序中的一個錯誤,您可能想要報告它。同時,您可以嘗試在複製send_keys操作之間添加無用的按鍵;這對頁面沒有任何影響。但這更像是一種破解而已。

例如:

driver.find_element_by_xpath("//body").send_keys(Keys.RIGHT) 
driver.find_element_by_xpath("//body").send_keys("y") # pick a key that doesn't do anything 
driver.find_element_by_xpath("//body").send_keys(Keys.RIGHT) 
+0

感謝您的輸入,我試過這個,我看到了相同的行爲。 –

相關問題