selenium 自动化测试框架学习笔记

 环境配置

1.安装命令

pip install selenium == 4.9.1  -i https://pypi.tuna.tsinghua.edu.cn/simple

下载驱动:

安装完 selenium 后,还需要安装使用 selenium 控制的浏览器需要的驱动。
谷歌驱动下载地址: https://googlechromelabs.github.io/chrome-for-testing/#stable
驱动下载完成后将文件移动到系统环境变量中:
MacOS :将文件移动到 /usr/local/bin 目录
Windows :将文件移动到python 安装目录下
from selenium import webdriver
browser = webdriver . Chrome ()

 注意:驱动文件是要和python放到一起的,一个目录下,

2.获取需要操作的浏览器对象

browser = webdriver.Chrome()   

3.加载指定的页面

browser.get('需要访问的url')

 当get多个页面时,浏览器会在一个标签页中,按照顺序至上往下按照顺序切换,不会创建新的标签页

4.截屏

browser.save_screenshot('图片名称')

5.获取页面源代码

html = browser.page_source()

6.查看cookies

print(browser.get_cookies()

7.获取指定元素

browser.find_element(By.ID,‘元素id值’).send_keys('填入内容')

8.获取多个元素

browser.find_elements()

9.点击“百度一下”

find_element(By.Id,"su"). click()

为了看到效果,我们可以增加time.sleep(4)让运行的慢一点

import time
from selenium import webdriver
from selenium.webdriver.common.by import By

browser = webdriver.Chrome()

browser.get('https://www.baidu.com')
# browser.save_screenshot('百度首页.png')
time.sleep(3)
browser.find_element(By.ID,"kw").send_keys("java")
time.sleep(5)
browser.find_element(By.ID,'su').click()
time.sleep(5)

10.查看经过处理之后,本页面最后显示的url,如果有302的话,那么就是302之后的url

browser .current_url

11.关闭页面

当浏览器只有1个页面时,此操作会关闭浏览器退出

browser .close()

12.通过js脚本打开新标签页

 会创建新的标签页进行访问网站

js = Windows.open("https://www.sogou.com")

browser.execute_script(js)

13.切换标签页

browser.switch_to.window(brwser.window_handles[0])

14.让浏览器退出

如果selenium打开了很多

browser.quit()

 

import time
from selenium import webdriver

browser= webdriver.Chrome()
browser.get('https://movie.douban.com/top250')
time.sleep(3)
# 打开淘宝
browser.get("http://login.taobao.com")
time.sleep(3)
# 打开搜狗
js = "window.open('http://www.sogou.com')"
browser.execute_script(js)
time.sleep(3)
# 切换到第1个标签页
browser.switch_to.window(browser.window_handles[0])
time.sleep(3)
browser.switch_to.window(browser.window_handles[1])
time.sleep(4)
# 关闭第2个标签页
browser.close()
time.sleep(3)
browser.quit()
time.sleep(3)

元素定位方法

1.元素定位的基本使用方法

在定位元素时,需要借助selenium框架提供的定位工具来元素定位,需要导入

from  selenium.webdriver.common.by import By

 2.单个节点(返回一个对象)

find_element(By.ID,'定位规则')    #通过id查找

find_element(By.XPATH,'定位规则')#通过XPATH语句

find_element(By.NAME,'定位规则')

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选择器查找  ‘#ww’ id为ww

                                                                                #通过css选择器查找  ‘.word’ class为word

 

3.多个节点(返回的是一个列表)

find_elements(By.ID,'定位规则')  #通过id查找

find_elements(By.NAME,'定位规则')  #通过XPATH语句

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,'定位规则')  #通过css选择器查找  ‘#ww’ id为ww

                                                                                #通过css选择器查找  ‘.word’ class为word

注意点:

find_element 和find_elements的区别是:前者返回的是一个对象而后者是一个列表

by_link_text和by_partial_link_text 的区别:前者匹配全部文本 而后者包含部分文本

import time
from selenium import webdriver
from selenium.webdriver.common.by import By

browser= webdriver.Chrome()

browser.get('http://news.baidu.com/')

ret = browser.find_element(By.ID,'ww')
ret_1 =browser.find_element(By.CSS_SELECTOR,'#ww')
ret_2 =browser.find_element(By.CSS_SELECTOR,'.word')
ret_3 =browser.find_element(By.XPATH,'//input[@class="word"]')
print(ret,ret_1 ,ret_2 ,ret_3 )
time.sleep(3)

js = "windows.open('https://movie.douban.com/top250')"
browser.execute_script(js)
time.sleep(3)

ret_4 = browser.find_elements(By.CSS_SELECTOR ,'.item')
print(ret_4)

time.sleep(10)

browser.quit()

selenium框架的其他方法

1.提取标签内容与属性值

获取文本:

element.text

获取属性值:

element.get_attribute("href")

处理cookie

通过driver.get_cookies()能够获取所有的cookie

cookie转dict

cookie_list = browser.get_cookies()

整理为requests等需要的字典方式,因为浏览器在发送新请求时携带的cookie只有name、value

所以此时提取的也只有name、value,其他的不需要

cookie_dict={x["name"]:x["value"] for x in cookie_list}

print(cookie_dict)

删除一条cookie

browser.delete_cookie("CookieName")

删除所有的cookie

browser.delete_all_cookies()

 添加cookie

browser.add_cookie{"name":"银子","address":"长沙"}

  • 26
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值