我想使用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
@ArtjomB。感謝您的評論。我是一名初學者。那麼,請讓我知道「合成事件」是什麼? – Jose
對不起,沒有收到您的通知,因爲我刪除了我的評論,並將其作爲答案。如果你在頁面上有jQuery,你可以通過'driver.execute_script()'嘗試類似[this](http://stackoverflow.com/questions/21588122/move-draggable-to-position-programmatically)。 –