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