在 Selenium Python 中滚动页面

问题描述 投票:0回答:1

您能否解释/分解以下有关“scrollTop”在 Selenium-Python 中如何工作的语法:

inner_window = driver.find_element(By.XPATH, "XPATH")
driver.execute_script('arguments[0].scrollTop = arguments[0].scrollTop + 
document.getElementById("ID").scrollHeight;',
inner_window,)

上面的代码直接向下滚动到滚动条的底部并选取底部的值,而我需要滚动并从页面的顶部、中间和底部选取值。

另外,我怎么知道何时到达滚动底部?

我也尝试了以下方法,但没有成功:

ht= driver.execute_script("return document.getElementById('ID').scrollHeight")
print(ht)
nht= ht//3
print(nht)
sht = str(nht)



inner_window = driver.find_element(By.XPATH, "XPATH")


for items in ree:
    time.sleep(1)
    wer=items.text.replace(' ','')
    #print(wer)
    arr1.append(wer)
    driver.execute_script('arguments[0].scrollTop = arguments[0].scrollTop + '+sht+';',
    inner_window,
    )


time.sleep(10)

print(arr1)
python selenium-webdriver scroll scrolltop
1个回答
0
投票

如果你想用 Selenium 滚动到页面末尾,最安全的方法不是使用 JavaScript,而是模拟按下 End 键:

from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

body_element = driver.find_element(By.TAG_NAME, "body")
body_element.send_keys(Keys.END)

但是还有一种更简单的方法。坦白说,我是 Browserist 包的作者。 Browserist 是 Selenium Web 驱动程序的轻量级、简洁的扩展,使浏览器自动化变得更加容易。只需使用

pip install browserist
安装软件包即可。

Browserist有多种滚动选项,只需要几行代码。例子:

from browserist import Browser

browser = Browser()
browser.open.url("https://stackoverflow.com")
browser.scroll.into_view("/html/body/div[3]/div[2]/div[1]/div[3]/div/div/div[6]")
browser.scroll.page.to_end()
browser.scroll.page.to_top()
browser.scroll.page.down()
browser.scroll.down_by(100)
browser.scroll.up_by(50)

这就是我得到的(由于 Browser 快速完成工作而放慢速度)。我希望这是有帮助的。如果您有疑问请告诉我?

© www.soinside.com 2019 - 2024. All rights reserved.