Selenium库的使用

一、什么是Selenium

selenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行(Selenium Remote Control)和测试的并行处理(Selenium Grid)。Selenium的核心Selenium Core基于JsUnit,完全由JavaScript编写,因此可以用于任何支持JavaScript的浏览器上。

selenium可以模拟真实浏览器,自动化测试工具,支持多种浏览器,爬虫中主要用来解决JavaScript渲染问题。

支持浏览器:

aaa

PhantomJS是一个而基于WebKit的服务端JavaScript API,支持Web而不需要浏览器支持,其快速、原生支持各种Web标准:Dom处理,CSS选择器,JSON等等。PhantomJS可以用用于页面自动化、网络监测、网页截屏,以及无界面测试

二、selenium基本使用 

声明浏览器对象
from selenium import webdriver
browser = webdriver.Chrome()
browser.get('')
#报错: 'chromedriver' executable needs to be in Path 
#解决方法: https://blog.csdn.net/qq_26200629/article/details/86141131
#或者将exe放到chrom安装目录的Application下,并手动添加环境变量  (然而 好像不太行)
#亲测可行的:  直接将chromedriver复制到python.exe 同目录下

访问页面

from selenium import webdriver

browser = webdriver.Chrome()  #声明浏览器对象
browser.get("http://www.taobao.com")   #打开浏览器访问百度
print(browser.page_source)  #返回页面资源
browser.close()

查找单个元素

from selenium import webdriver

browser = webdriver.Chrome()

browser.get("http://www.taobao.com")
input_first = browser.find_element_by_id("q")       #通过id
input_second = browser.find_element_by_css_selector("#q") #css选择器
input_third = browser.find_element_by_xpath('//*[@id="q"]')  #path选择器
print(input_first)
print(input_second)
print(input_third)
browser.close()

#常用查找方法
find_element_by_name (“name对应的值”)

find_element_by_id (“id对应的值”)

find_element_by_xpath (“xpath的值,可选中元素后,鼠标右键复制xpath”)

find_element_by_link_text (“链接的文本内容”)

#(link定位的补充,可取链接部分文本内容进行定位)

find_element_by_partial_link_text (“链接的部分文本内容”)

find_element_by_tag_name (“tag对应的值”)

find_element_by_class_name (“class对应的值”)

find_element_by_css_selector (“CSS路径,同样可选中元素后,鼠标右键复制CSS路径”)
#
from selenium.webdriver.common.by import By
input_first = browser.find_element(By.ID,"q")

多个元素查找

from selenium import webdriver

browser = webdriver.Chrome()
browser.get("http://www.taobao.com")
lis = browser.find_elements_by_css_selector('.service-bd li')
print(lis)
browser.close()
#
lis = browser.find_elements(By.CSS_SELECTOR,'.service-bd li')

#常用查找方法
find_elements_by_name
find_elements_by_id
find_elements_by_xpath
find_elements_by_link_text
find_elements_by_partial_link_text
find_elements_by_tag_name
find_elements_by_class_name
find_elements_by_css_selector

元素交互操作

from selenium import webdriver

import time

browser = webdriver.Chrome()
browser.get("http://www.taobao.com")

#<input id="q" name="q" aria-label="请输入搜索文字" .......>

input_str = browser.find_element_by_id('q')
input_str.send_keys("ipad") #输入ipad
time.sleep(1)
input_str.clear()     #删除
input_str.send_keys("MacBook pro")   #输入macBook pro

#<button class="btn-search tb-bg" type="submit" data-spm-click="gostr=/tbindex;locaid=d13">
#("btn-search tb-bg") 报错 无法找到element  
#("btn-search.tb-bg") 可以找到element  
button = browser.find_element_by_class_name('btn-search')  #寻找
button.click()  #点击

交互动作(将动作附加到动作链中串行执行

from selenium import webdriver
from selenium.webdriver import ActionChains

browser = webdriver.Chrome()

url = "http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable"
browser.get(url)
browser.switch_to.frame('iframeResult')
source = browser.find_element_by_css_selector('#draggable')
target = browser.find_element_by_css_selector('#droppable')
actions = ActionChains(browser)
actions.drag_and_drop(source, target)
actions.perform()

执行JavaScript

from selenium import webdriver
browser = webdriver.Chrome()
browser.get("http://www.zhihu.com/explore")
browser.execute_script('window.scrollTo(0, document.body.scrollHeight)')
browser.execute_script('alert("To Bottom")')

获取元素属性

from selenium import webdriver

browser = webdriver.Chrome()
url = 'https://www.zhihu.com/explore'
browser.get(url)
logo = browser.find_element_by_id('zh-top-link-logo')
print(logo)
print(logo.get_attribute('class'))

获取文本值

from selenium import webdriver

browser = webdriver.Chrome()
url = 'https://www.zhihu.com/explore'
browser.get(url)
input = browser.find_element_by_class_name('zu-top-add-question')
print(input.text)

获取ID,位置,标签名

from selenium import webdriver

browser = webdriver.Chrome()
url = 'https://www.zhihu.com/explore'
browser.get(url)
input = browser.find_element_by_class_name('zu-top-add-question')
print(input.id)
print(input.location)
print(input.tag_name)
print(input.size)

浏览器的前进和后退

import time
from selenium import webdriver

browser = webdriver.Chrome()
browser.get('https://www.baidu.com/')  #访问baidu
browser.get('https://www.taobao.com/') #访问taobao
browser.get('https://www.sina.com/')   #访问sina
browser.back() #由sina返回taobao
time.sleep(1)
browser.forward()  #由taobao页换到sina
browser.close()

cookie操作

from selenium import webdriver

browser = webdriver.Chrome()
browser.get('https://www.zhihu.com/explore')
print(browser.get_cookies())
browser.add_cookie({'name': 'name', 'domain': 'www.zhihu.com', 'value': 'zhaofan'})
print(browser.get_cookies())
browser.delete_all_cookies()
print(browser.get_cookies()
 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值