我已经使用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
有可能吗?还有其他可接受的解决方案吗?
答案 0 :(得分:9)
您可以使用WebDriver.execute_script
执行javascript:
eula = dr.find_element_by_id('eulaFrame')
dr.execute_script('arguments[0].scrollTop = arguments[0].scrollHeight', eula)
可以使用eula
访问传递给javascript的参数(上例中的arguments[..]
)。
附注:如果您在javascript代码中使用return
,则该值可用作execute_script
的返回值。