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

时间:2014-10-04 03:50:54

标签: 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

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

1 个答案:

答案 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的返回值。