Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Selenium'move_by_offset'不';行不通_Python_Selenium_Selenium Webdriver_Selenium Chromedriver - Fatal编程技术网

Python Selenium'move_by_offset'不';行不通

Python Selenium'move_by_offset'不';行不通,python,selenium,selenium-webdriver,selenium-chromedriver,Python,Selenium,Selenium Webdriver,Selenium Chromedriver,使用Python Selenium调用简单的滚动动作不起作用: driver = webdriver.Chrome() driver.get('https://www.wikipedia.org/') time.sleep(2) actions = ActionChains(driver) actions.move_by_offset(500, 500).perform() 例如,具有移动到元素的功能,工作确定并执行滚动: driver = webdriver.Chrome() driver.

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

driver = webdriver.Chrome()
driver.get('https://www.wikipedia.org/')
time.sleep(2)
actions = ActionChains(driver)
actions.move_by_offset(500, 500).perform()
例如,具有移动到元素的功能,工作确定并执行滚动:

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()
driver=webdriver.Chrome()
司机,上车https://www.wikipedia.org/')
时间。睡眠(2)
element=driver.find_element_by_css_selector()
动作=动作链(驱动程序)
动作。将元素移动到元素(元素)。执行()
调用移动到具有偏移量的元素时,再次无效

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()
driver=webdriver.Chrome()
司机,上车https://www.wikipedia.org/')
时间。睡眠(2)
element=driver.find_element_by_css_selector()
动作=动作链(驱动程序)
动作。使用偏移量(元素,500500)将元素移动到元素。执行()

有什么原因吗

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

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

driver = webdriver.Chrome()
driver.get('https://www.wikipedia.org/')
actions = ActionChains(driver)
actions.move_by_offset(300, 500).context_click().perform()
要按偏移量滚动页面,必须使用js:

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

移动鼠标后,请尝试等待几秒钟。例如,下面在我的CentOS7.3主机中获取屏幕截图的代码适用于我

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
chrome_options.add_argument("--window-size=720,480")
chrome_options.add_argument('--no-sandbox')
driver = webdriver.Chrome('/usr/bin/chromedriver', chrome_options=chrome_options, service_args=['--verbose', '--log-path=/tmp/chromedriver.log'])

driver.get(url)
time.sleep(6)

ActionChains(driver).move_by_offset(50, 50).perform()
time.sleep(2)

filename="/tmp/Screenshots/uuid.png"
driver.save_screenshot(filename)

移动
鼠标
,我想就像网页上的用户指针,但不是普通的鼠标。我认为这里遗漏了一些东西,因为我们为什么需要这种方法?例如,
move\u to\u element(to\u element)[source]
进行滚动,但是从文档中您会发现
将鼠标移动到元素的中间。