0


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":"长沙"}


本文转载自: https://blog.csdn.net/m0_59329828/article/details/135600199
版权归原作者 糖糖糖果88 所有, 如有侵权,请联系我们删除。

“selenium 自动化测试框架学习笔记”的评论:

还没有评论