Selenium笔记
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Selenium笔记相关的知识,希望对你有一定的参考价值。
Selenium是一个Web自动化测试工具(也可以当做爬虫工具
它可以模拟N多浏览器行为,而且支持多平台(windows、linux、MAC),多语言(C、 java、ruby、python、c#),多浏览器就不说啦。
准备工作:
python2.7
Selenium2.53.5
Chrome浏览器(其实其他的也可以)
Selenium的安装通过工具 pip install selenium 即可
想要通过Selenium模拟浏览器行为,我们还需要安装浏览器驱动
参考文章:http://blog.csdn.net/my2010sam/article/details/38582491
环境测试:
运行以下代码测试环境配置是否成功
from selenium import webdriver import time browser = webdriver.Chrome()#选择要操控的浏览器 browser.get("http://cn.bing.com/")#跳转到指定网页 time.sleep(5)#休眠 browser.quit()
通过运行这段代码我们你会发现Selenium为你打开了一个新的Chrome浏览器,并自动跳转到必应中国之后关闭。到此,可以表明我们的环境配置完成了。
DEMO1:
我们接着上面的代码继续往下,通过bing搜索我们输入的关键词并跳转到结果页。
#输入关键词 browser.find_element_by_css_selector("input[class=‘b_searchbox‘][name=‘q‘]").send_keys(u"重庆理工大学") #点击‘搜索按钮‘ browser.find_element_by_css_selector("input[class=‘b_searchboxSubmit‘]").click()
想通过Selenium对页面内的对象进行操作的话,我们就必须先找到这个对象,而找到这个对象的方法有很多种,在Selenium中统称为定位。通过我自己的几次测试和网上一些教程,使用“css selector”来定位页面对象的话在速度和准确率都有不错的表现。
css selector
CSS(层叠样式表Cascading Stylesheet) Selector来定位页面上的元素(Elements)
举一个简单的例子,我们查看bing首页的源代码。
逐层拆解我们发现,输入框这一对象的标签是<input 加上一些描述属性>我们可以通过
browser.find_element_by_css_selector("input[class=‘b_searchbox‘]")find_element_by_css_selector这个方法告诉浏览器我们选择css selector方法来定位页面对象。并且我们告诉他,我们要的是标签为input 并带有属性class=‘b_searchbox‘ 的对象,他就会返回一个element对象给我们。我们便可以对这个对象做指定操作。这里注意一下,如果仅靠一个属性无法定位到标签的话,我们可以使用2个属性。具体的写法为:
browser.find_element_by_css_selector("input[class=‘b_searchbox‘][name=‘q‘]")当然也可以使用3个4个甚至更多的属性。不过我们在某些复杂的网页中,可能存在两个标签的属性完全一样(无ID),这个时候我们可以使用层级定位,先定位到它所属的某个标签,比如一个大的DIV,在通过element对象的find方法来定位它下层的对象,现在先不举例子,以后大家可能会遇到。掌握页面内对象的定位是使用Selenium的基础,所以一定要熟练。
当我们定位到一个元素后,我们就可以对它进行指定操作啦。
比如说输入框我们可以使用send_keys("keyword")进行输入
按钮的话我们可以通过click()进行点击。
这样我们运行上面的代码就可以打开一个浏览器并进入bing首页进行搜索啦。
(恩。。好像并没有什么卵用 不过这是基础!!!
以上是关于Selenium笔记的主要内容,如果未能解决你的问题,请参考以下文章
Selenium JavascriptExecutor 详解