1

我想使用PhantomJS更改滑塊手柄,但它不起作用。請檢查在Chrome Webdriver下工作但不在PhantomJS中的以下代碼。這些代碼嘗試將滑塊欄寬度的10%滑動到右側。 任何想法讓它在PhantomJS上工作?爲什麼ActionChains在PhantomJS Webdriver中不起作用,但適用於Chrome Webdriver?

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

# settings for choosing Chrome or PhantomJS: 
#... 
#... 
#driver = webdriver.Chrome(...) or webdriver.PhantomJS(...) 

url = "http://jqueryui.com/slider/" 
driver.get(url) 
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.TAG_NAME, "iframe"))) 

handle_element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, "#slider > span"))) 
bar_element = driver.find_element_by_css_selector("#slider") 
offset = bar_element.size['width'] * 0.1 

print "Initial handle location:", handle_element.get_attribute("style") 

move = ActionChains(driver) 
move.click_and_hold(handle_element).move_by_offset(offset, 0).release().perform() 

print "Handle location after sliding:", handle_element.get_attribute("style") 

print "Slider bar size:", bar_element.size['width'] 

輸出時的驅動程序是Chrome瀏覽器:

Initial handle location: left: 0%; 
Handle location after sliding: left: 10%; 
Slider bar size: 548 

輸出時的驅動程序是PhantomJS:

Initial handle location: left: 0%; 
Handle location after sliding: left: 0%; 
Slider bar size: 444 
+0

@ArtjomB。感謝您的評論。我是一名初學者。那麼,請讓我知道「合成事件」是什麼? – Jose

+0

對不起,沒有收到您的通知,因爲我刪除了我的評論,並將其作爲答案。如果你在頁面上有jQuery,你可以通過'driver.execute_script()'嘗試類似[this](http://stackoverflow.com/questions/21588122/move-draggable-to-position-programmatically)。 –

回答

2

PhantomJS不支持本機拖動。你將不得不嘗試合成事件。

對於「鼠標移動」,但是,沒有按下的按鈕(即不拖)

Source

如果您有jQuery的頁面上,你可以嘗試類似this通過driver.execute_script()Here是一個紅寶石的例子。

+0

和JS原生:https://stackoverflow.com/questions/596481/is-it-possible-to-simulate-key-press-events-programmatically – User

+0

@User這正是我所說的「合成事件」。 –

+0

當問題被標記爲python時,您還提供了一個指向ruby的鏈接 – User

相關問題