Python Selenium `move_by_offset` 不起作用

Gen*_*mes 5 python selenium selenium-chromedriver selenium-webdriver

使用 Python Selenium 调用简单的滚动操作不起作用

driver = webdriver.Chrome()
driver.get('https://www.wikipedia.org/')
time.sleep(2)
actions = ActionChains(driver)
actions.move_by_offset(500, 500).perform()
Run Code Online (Sandbox Code Playgroud)

例如移动到元素的功能,可以正常工作并且可以滚动:

driver = webdriver.Chrome()
driver.get('https://www.wikipedia.org/')
time.sleep(2)

element = driver.find_element_by_css_selector(<Something>)
actions = ActionChains(driver)
actions.move_to_element(element).perform()
Run Code Online (Sandbox Code Playgroud)

调用移动到具有偏移量的元素,不再起作用

driver = webdriver.Chrome()
driver.get('https://www.wikipedia.org/')
time.sleep(2)

element = driver.find_element_by_css_selector(<Something>)
actions = ActionChains(driver)
actions.move_to_element_with_offset(element, 500, 500).perform()
Run Code Online (Sandbox Code Playgroud)

有什么原因吗?

Art*_*nov 2

似乎move_by_offset无法滚动页面,但它仍然可以将鼠标移动到距当前鼠标位置的偏移量。

为了确认我们可以尝试这样做:

driver = webdriver.Chrome()
driver.get('https://www.wikipedia.org/')
actions = ActionChains(driver)
actions.move_by_offset(300, 500).context_click().perform()
Run Code Online (Sandbox Code Playgroud)

要按偏移量滚动页面,我们必须使用 js:

driver = webdriver.Chrome()
driver.get('https://www.wikipedia.org/')
driver.execute_script('window.scrollBy(0, 500)')  # x=0, y=500
Run Code Online (Sandbox Code Playgroud)