一尘不染

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

selenium

我已经使用python一段时间了,我想保存需要事先登录的特定网页。由于此网站使用javascript,因此我决定将selenium用于Firefox和webfox。我能够登录。但是该站点要求我必须接受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

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


阅读 271

收藏
2020-06-26

共1个答案

一尘不染

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

eula = dr.find_element_by_id('eulaFrame')
dr.execute_script('arguments[0].scrollTop = arguments[0].scrollHeight', eula)

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

旁注:如果return在javascript代码中使用,则该值可用作的返回值execute_script

2020-06-26