一 前言
Selenium系列文章已经基本涵盖了主要的知识点,至于PO模式,发现有篇文章写的挺好的,后续转载分享过来,哈哈。Python Web UI自动化技术就要告一段落了,接下来打算写Django Web开发相关的文章,希望有兴趣的同学可以关注、一起学习,最后的目标是基于Django开发一套简易系统作为系列文章的总结。然后再继续网络爬虫、数据分析。。。好吧,感觉好多,而且只能靠业余时间来整。。。
作为Selenium系列的完结,本文将对一些常用问题进行总结,同时也参考了网络上的一些资料,一并分享给大家。
二 常见问题总结
1. 如何使用ChromeDriver 驱动?
Selenium支持多种浏览器,而不同的浏览器需要有对应的驱动来支持,对于ChromeDriver,推荐从镜像地址下载:http://npm.taobao.org/mirrors/chromedriver/,然后解压出chromedriver的可执行文件,直接放到python安装路径且与python.exe同级目录即可。可参看文章python selenium系列(一):框架介绍及安装。
2. Selenium的元素定位思想?
除了基本的元素定位方法外,需要理解分层定位、多框架多窗口、多级菜单等定位思想和应用场景,以及在此思想上的具体问题具体分析。
3. 如何向下滚动到页面的底部?
可以在加载完成的页面上使用 execute_script 方法执行js,调用javascript API滚动到底部或页面的任何位置。
如滚动到页面底部的操作方法:
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
该 window 对象在DOM有一个滚动到窗口任意位置的scrollTo方法。 scrollHeight是所有元素的共同属性,document.body.scrollHeight 将给出整个页面体的高度。
4. 如果上传文件到文件上传控件?
选择 <input type="file"> 元素并且调用 send_keys() 方法传入要上传文件的路径,可以是绝对路径,也可以是相对路径(比较鸡肋)。 请注意Windows和Unix系统路径的区别。
5. 如果获取当前窗口的截图?
使用webdriver提供的 save_screenshot 方法:
代码语言:javascript复制from selenium import webdriver
driver = webdriver.Firefox()
driver.get('http://www.python.org/')
driver.save_screenshot('screenshot.png')
driver.quit()
6. 如何处理弹框?
使用webdriver提供的alert_is_present方法。
代码语言:javascript复制from selenium.webdriver.support import expected_conditions as EC
#判断弹框是否出现,如果出现则点击取消,否则无须处理
result = EC.alert_is_present()(browser) # 如果存在 返回alter对象,否则返回false, 源码
if result:
print(result.text)
result.dismiss()
else:
pass