Selenium与WebDriver
Selenium是一个浏览器自动化操作框架。
Selenium主要有三种工具。它们分别被称为“IDE”、“WebDriver”和“Grid”。
第一个工具是SeleniumIDE,是Firefox的扩展插件,支持用户录制和回访测试。录制/回访模式存在局限性,对许多用户来说并不适合。
第二个工具是Selenium WebDriver提供了各种语言环境的API来支持更多控制权和编写符合标准软件开发实践的应用程序。
第三个工具是SeleniumGrid帮助工程师使用Selenium API控制分布在一系列机器上的浏览器实例,支持并发运行更多测试。
官网上上这么介绍WebDriver:WebDriver is a clean, fast framework for automated testing of webapps. 其实它完全可以用作其它用途,并不局限于进行自动化测试。
WebDriver针对各个浏览器而开发,取代了嵌入到被测Web应用中的JavaScript。与浏览器的紧密集成支持创建更高级的测试,避免了JavaScript安全模型导致的限制。除了来自浏览器厂商的支持,WebDriver还利用操作系统级的调用模拟用户输入。WebDriver支持Firefox(FirefoxDriver)、IE (InternetExplorerDriver)、Opera (OperaDriver)和Chrome (ChromeDriver)。 它还支持Android (AndroidDriver)和iPhone (IPhoneDriver)的移动应用测试。它还包括一个基于HtmlUnit的无界面实现,称为HtmlUnitDriver。WebDriver API可以通过Python、Ruby、Java和C#访问,支持开发人员使用他们偏爱的编程语言来创建测试。
WebDriver下载地址:
https://npm.taobao.org/mirrors/chromedriver/
常见问题
- webdriver爬虫#document问题
如图,我们想获取#document下面body的内容。
如果使用
driver = webdriver.Chrome()
driver.get(url)
driver.find_element_by_xpath
此时会发现#document下的body中的内容为空。
document is a virtual element, which doesn’t really mean anything.
在get(url)之后使用
driver.switch_to_default_content()
frame = driver.find_elements_by_tag_name('iframe')[0]
driver.switch_to_frame(frame)
跳转到iframe中,然后再driver.find_element_by_xpath即可。