环境配置
1.安装命令
pip install selenium == 4.9.1 -i https://pypi.tuna.tsinghua.edu.cn/simple
下载驱动:
from selenium import webdriverbrowser = 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()文章来源:https://www.toymoban.com/news/detail-817736.html
添加cookie
browser.add_cookie{"name":"银子","address":"长沙"}文章来源地址https://www.toymoban.com/news/detail-817736.html
到了这里,关于selenium 自动化测试框架学习笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!