硒中的鼠标滚动模拟-Python

时间:2018-07-27 15:05:43

标签: python selenium-webdriver selenium-firefoxdriver

在报废网站时,我必须滚动一个由许多div组成的表格。 我使用以下代码使滚动条移到最后,

source_element = driver.find_element_by_xpath("//div[4]/div/div[103]/div[2]/div[1]/div[2]") ### Scrollbar element

dest_element = driver.find_element_by_xpath("//div[4]/div/div[103]/div[2]/div[1]/div[4]/span") ### ▼ element
ActionChains(driver).drag_and_drop(source_element, dest_element).perform()

但问题是发生的非常快,并且表中的数据无法正确加载。我试图用硒模拟鼠标滚动-python函数,但无法实现。除了使用 pynput (它可以模拟鼠标功能,但我必须将光标实际放在网页上)之外,是否有其他解决方案可以减慢它的速度或其他方式?

向下滚动时会加载更多表条目。我还尝试使用拖动n逐个偏移量,但滚动条不会移动,并且会抛出 MoveTargetOutOfBoundsException

1 个答案:

答案 0 :(得分:0)

如果您知道元素的位置,则可以使用javascript执行程序滚动到该元素。我不确定是否有其他解决方案可以缓慢滚动,但是如果您的要求是缓慢滚动以加载所有数据,则可以尝试滚动至任何元素,等待加载数据然后滚动至其他元素并重复。

JavascriptExecutor js = (JavascriptExecutor) driver;
WebElement scrollto = driver.findElement(By.xpath("//div[4]/div/div[103]/div[2]/div[1]/div[4]/span")); //Find element by xpath and store in variable "Element"     
js.executeScript("arguments[0].scrollIntoView();", scrollto); //This will scroll the page till the element is found