selenium安装及使用总结

安装 

第一步:我是Windows的,在cmd下直接pip install selenium就可以了。

第二步:selenium是一个自动化测试工具,需要配合浏览器使用,如果用的是Chrome的话,就下载一个ChromeDriver,当然其他的浏览器,比如火狐的就安装对应的驱动就行。注意,要根据自己浏览器的版本来下载相应ChromeDriver。查看版本可在浏览器右上角——帮助——关于Google Chrome内查看

第三步:下载好驱动后,将chromedriver.exe文件拖到python的Scrips目录下(确保该路径已经添加到环境变量),检验是否安装成功,可在python里导入看是否会报错就行

使用

应用模块

1.申明浏览器对象并访问某个网页

from selenium import webdriver
# 申明浏览器对象
browser = webdriver.Chrome()
# get()方法请求网页
browser.get('http:www.baidu.com')

执行以上代码后,将会自动弹出一个新窗口进入到百度主页下

2. 获取节点

2.1 单个节点的获取,

比如我们要获取搜索框,并输入查找的关键词,python代码及结果如下。

扫描二维码关注公众号,回复: 3216782 查看本文章

         input = browser.find_element_by_id('kw')是获取输入框的节点(即找到网页源代码中的id属性为"kw"的节点,注意一点,每个id属性的值在网页中是唯一的,一个id属性只能表示一个节点,所以才会有by_id()这种方法),input.send_keys('python')是输入关键词“python”查找,当然,这儿只是在搜索框输入了python,并没有回车或者点击搜索。

        当然查找节点的方法有很多,下面列出单个节点查找的方法

find_element_by_xpath('xpath表达式')  # 按xpath的规则来查找
find_element_by_link_text('文本内容') # 精确查找(即与文本内容完全一致的查找),以文本内容查找
find_element_by_partial_link_text('文本内容')  # 这是一个模糊查找(即可以不用输入所有文本内容,可以理解为关键词查找)
find_element_by_tag_name('标签名')  # 通过标签名查找
find_element_by_class_name('属性名')  # 属性名查找
find_element_by_css_selector('css表达式')  # css表达式查找

2.2 多个节点的获取,

那么如果我们需要的是一类的节点,例如糗事百科的段子,

他们是属于一类的标签,如果还是用上面介绍的方法的话,就只能得到一个节点(一个段子的内容)。此时若要获取所有要得到的节点,那么就用elements(上面的方法中的element改为elements),这样得到的就是一个列表,列表的每个元素表示一个段子的节点。

3. 节点交互

输入文字用send_keys()方法,清空文字用clear()方法, 点击按钮用click()方法,返回用back(),前进用forward(),

4. 获取节点信息

4.1 获取属性

使用get_attribute()方法

例已经得到该节点input,那么要得到它的属性name

input.get_attribute('name')

4.2 获取文本内容

每个WebElement节点都有text属性值,直接调用这个属性就可以得到节点内部的文本信息。有两种方法

print(input.text)  # 方法一:得到这个节点的文本信息
input.get_attribute('textContent')  # 方法二:得到这个节点的文本信息

这儿input节点没有内容,所以返回的是空值

对了,之前有个疑问,就是browser.get(url)之后,经过多次操作之后,网页就可能不是之前的链接对应的网页了,那么这样还能获取到当前网页的节点吗,亲自验证了一下才发现,每次刷新后,网页虽然变了,获取的节点依然是当前网页下的节点(注意,不能手动的去操作浏览器,否则页面发生跳转之后,程序是不会调到这个跳转页面来的)

elenium 内容很多,就只是把目前学到的,并且用的最多的记录一下,下面链接里有关于elenium的教学视频

链接:https://pan.baidu.com/s/1PDEUAfU3X-MB8hp96dYOHw 密码:fcao

 

猜你喜欢

转载自blog.csdn.net/wtwcsdn123/article/details/81162102