Selenium Firefox webdrive,使用Python,在div中滚动

Aja*_*nti 5 python selenium selenium-webdriver

我已经使用python一段时间了,我想保存需要事先登录的特定网页.由于这个网站使用javascript,我决定使用selenium for python和firefox webdrive.我能够登录.但该网站要求我在访问所需页面之前接受EULA.

问题是我必须向下滚动整个文本(使用单独的div滚动条)才能单击"接受".我对selenium和javascript完全陌生.

提供的用户名和密码有效,我会在获得解决方案后更改它们.

dr = webdriver.Firefox()
dr.get("https://freida.ama-assn.org/Freida/user/programDetails.do?pgmNumber=1401611114")
dr.find_element_by_id("go_username").clear()
dr.find_element_by_id("go_username").send_keys("hajayd")
dr.find_element_by_id("go_password").clear()
dr.find_element_by_id("go_password").send_keys("123456")
dr.find_element_by_id("Image1").click()

dr.get("https://freida.ama-assn.org/Freida/eula.do")
# code to scroll down eula here
dr.find_element_by_id("agreeBtn").click()

dr.get("https://freida.ama-assn.org/Freida/user/programDetails.do?pgmNumber=1401611114")
# Final page I want to visit
Run Code Online (Sandbox Code Playgroud)

可能吗?还有其他可接受的解决方案吗?

fal*_*tru 9

你可以WebDriver.execute_script用来执行javascript:

eula = dr.find_element_by_id('eulaFrame')
dr.execute_script('arguments[0].scrollTop = arguments[0].scrollHeight', eula)
Run Code Online (Sandbox Code Playgroud)

eula传递给javascript的参数(在上面的示例中)可以使用arguments[..].

附注:如果您return在javascript代码中使用,该值可用作返回值execute_script.