web自动化测试之webdriver api总结

一、控制浏览器

1、driver.set_window_size(value,value):设置浏览器的大小,单位是像素;
2、driver.back():控制浏览器的后退
3、driver.forward():控制浏览器的前进
4、driver.refresh():刷新浏览器

from selenium import webdriver
import time

driver=webdriver.Chrome("C:\Program Files\Google\Chrome\Application\chromedriver.exe")
driver.get('https://www.baidu.com')

#todo 设置浏览器的大小
driver.set_window_size(2000,2000) #单位是像素

input_el=driver.find_element_by_xpath('//input[@id="kw"]')
input_el.send_keys('kobe')
butten_el=driver.find_element_by_xpath('//input[@type="submit"]').click()
time.sleep(2)
#todo 控制浏览器的后退
driver.back()

time.sleep(2)
#todo 控制浏览器的前进
driver.forward()

time.sleep(2)
#todo 刷新浏览器
driver.refresh()

二、WebDriver常用方法

clear() 清楚文本
send_keys(value) 键盘输入
click() 单击元素
submit() 提交表单
size 返回元素的尺寸
text 获取元素的文本
get_attribute(name) 获取属性值
is_displayed() 设置该元素是否用户可见

from selenium import webdriver
import time

driver=webdriver.Chrome("C:\Program Files\Google\Chrome\Application\chromedriver.exe")
driver.get('https://www.baidu.com')

input_el=driver.find_element_by_xpath('//input[@id="kw"]')
input_el.send_keys('kobe')
time.sleep(2)
#todo 清楚文本
input_el.clear()
input_el.send_keys('curry')

#todo 文本框提交
input_el.submit()
from selenium import webdriver
import time

driver=webdriver.Chrome("C:\Program Files\Google\Chrome\Application\chromedriver.exe")
driver.get('https://www.baidu.com')


#获取输入框的尺寸
input_el=driver.find_element_by_xpath('//input[@id="kw"]')
print(input_el.size)

#todo 获取文本信息
el1=driver.find_element_by_xpath('//a[@class="mnav c-font-normal c-color-t"][2]')
print(el1.text)

#todo 获取target的属性值
print(el1.get_attribute('target'))

#todo 返回元素可见
print(el1.is_displayed())

三、获得验证信息

driver.title:获取网页标题
driver.current_url:获取网页url

from selenium import webdriver
import time

driver=webdriver.Chrome("C:\Program Files\Google\Chrome\Application\chromedriver.exe")
driver.get('https://www.baidu.com')

print('搜索前——当前的页面标题和url')
print(driver.title)
print(driver.current_url)

input_el=driver.find_element_by_xpath('//input[@id="kw"]')
input_el.send_keys('kobe')
butten_el=driver.find_element_by_xpath('//input[@type="submit"]').click()

print('搜索后——当前的页面标题和url')
print(driver.title)
print(driver.current_url)

四、显性等待

locator=(‘xpath’,‘//input[@id=“kw1”]’)
webdriverwait=WebDriverWait(driver,5,0.5)
搭配合适的until方法 判断元素是否可见,元素可见继续向下执行
el=webdriverwait.until(expected_conditions.visibility_of_element_located(locator))

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
import time

driver=webdriver.Chrome("C:\Program Files\Google\Chrome\Application\chromedriver.exe")
driver.get('https://www.baidu.com')

#设置线性等等待
webdriverwait=WebDriverWait(driver,5,0.5)

#搭配合适的until方法 判断元素是否可见,元素可见继续向下执行
locator=('xpath','//input[@id="kw1"]')

el=webdriverwait.until(expected_conditions.visibility_of_element_located(locator))

el.send_keys('kobe')

el1=driver.find_element_by_xpath('//input[@type="submit"]').click()

自定义显性等待

from selenium import webdriver

import time

driver=webdriver.Chrome("C:\Program Files\Google\Chrome\Application\chromedriver.exe")
driver.get('https://www.baidu.com')


print('输出一个时间:',time.ctime())

#使用循环判断定位的元素是否存在
for i in range(10):
    try:
        element=driver.find_element_by_xpath('//input[@id="kw1"]')
        if element.is_displayed():
            break
    except:
        pass
    time.sleep(1)
else:
    print('Timeout')
print('等待时长',time.ctime())

五、隐式等待

driver.implicitly_wait(10)   #单位是秒

六、定位一组元素

获取一组元素
el_list=driver.find_elements_by_xpath(‘//div[@class=“name-box”]/a’)

from selenium import webdriver
import time
driver=webdriver.Chrome("C:\Program Files\Google\Chrome\Application\chromedriver.exe")
driver.get('https://qidian.com/rank/')


#获取一组元素
el_list=driver.find_elements_by_xpath('//div[@class="name-box"]/a')
print(len(el_list))

#遍历列表
for el in el_list:
    print(el.text)

执行结果

捕星之执宰星河
7号基地
陈医生,别怂!
请公子斩妖
开局就较真,对面被我吓到报警!
做媒这一块,我谁都不服
曾经,我想做个好人
大明:我,调教木匠皇帝
身为超人弟弟的我却成了祖国人

灵境行者
明克街13号
这游戏也太真实了
不科学御兽
家父汉高祖
深空彼岸
择日飞升
我的属性修行人生
我已不做大佬好多年

择日飞升
夜的命名术
陈医生,别怂!
我的属性修行人生
我在修仙界长生不死
开局就较真,对面被我吓到报警!
宇宙职业选手
深空彼岸
什么叫六边形打野啊

夜的命名术
家父汉高祖
择日飞升
明克街13号
这游戏也太真实了
道诡异仙
大乘期才有逆袭系统
我的属性修行人生
不科学御兽

从洪荒逃到武侠
美漫:我的战锤模拟器
曹操穿越武大郎
捉诡二十年,我进入了惊悚游戏
什么叫Carry型上单啊
代价逆转:我在大周斩仙
从体术开始纵横诸天
从欢乐颂开始的影视人生
这个武者太危险

七、多窗口切换

获得当前窗口的句柄:search_windows=driver.current_window_handle
获得当前所有窗口的句柄:all_handles=driver.window_handles
回到上一个窗口:driver.switch_to.window(search_windows)

from selenium import webdriver
import time
driver=webdriver.Chrome("C:\Program Files\Google\Chrome\Application\chromedriver.exe")
driver.get('https://baidu.com')
driver.implicitly_wait(10)

#获得百度搜索窗口的句柄
search_windows=driver.current_window_handle

driver.find_element_by_xpath('//a[text()="hao123"]').click()
time.sleep(2)


#获得当前所有窗口的句柄
all_handles=driver.window_handles
print(all_handles)

#切换到hao123页面
for handle in all_handles:
    if handle!=search_windows:
        driver.switch_to.window(handle)
        print(driver.title)
        driver.find_element_by_xpath('//a[text()="网易"]').click()

#回到搜索窗口
driver.switch_to.window(search_windows)

八、警告框的处理

获取警告框: alert=driver.switch_to.alert
alert.text: 获取警告框的文本信息
接收警告框: alert.accept()

from selenium import webdriver
import time
driver=webdriver.Chrome("C:\Program Files\Google\Chrome\Application\chromedriver.exe")
driver.get('https://baidu.com')
driver.implicitly_wait(10)

driver.find_element_by_xpath('//span[text()="设置"]').click()
driver.find_element_by_xpath('//span[text()="搜索设置"]').click()

#定位保存设置元素
driver.find_element_by_xpath('//a[text()="保存设置"]').click()

#获取警告框
alert=driver.switch_to.alert
print(alert.text)       #获取警告框的文本信息

#接收警告框
alert.accept()

九、下拉框的处理

from selenium import webdriver
import time
from selenium.webdriver import ActionChains
from selenium.webdriver.support.select import Select
driver=webdriver.Chrome("C:\Program Files\Google\Chrome\Application\chromedriver.exe")

driver.get('https://www.hao123.com/?src=from_pc')
driver.implicitly_wait(10)


select_el=driver.find_element_by_xpath('//span[text()="网页"]').click()


#根据value选择
Select(select_el).select_by_value('image')
time.sleep(1)

#根据文本选择
Select(select_el).select_by_visible_text('地图')
time.sleep(1)

#根据索引选择
Select(select_el).select_by_index(0)
time.sleep(1)

十、下载文件

from selenium import webdriver
import time
import os

#配置信息
options=webdriver.ChromeOptions()

prefs={
    
    
    'profile_default_content_settings.popups':0,#禁止弹出下载窗口
    'download.default_directory':os.getcwd()
}
options.add_experimental_option('prefs',prefs)

#创建谷歌浏览器的驱动
driver=webdriver.Chrome("C:\Program Files\Google\Chrome\Application\chromedriver.exe",chrome_options=options)
driver.implicitly_wait(10)
#打开网页
driver.get('https://www.python.org/downloads/')

#定位网页元素,单击下载
driver.find_element_by_xpath('//p[@class="download-buttons"]//a[@href="https://www.python.org/ftp/python/3.10.5/python-3.10.5-amd64.exe"]').click()

十一、操作Cookie

获取所有的cookies信息 : driver.get_cookies()
添加cookies信息 driver.add_cookie({‘name’:‘yzl’,‘value’:‘yzl111’})
删除cookie driver.delete_cookie(‘yzl’)
删除所有的cookie信息 driver.delete_all_cookies()

from selenium import webdriver
import time
driver=webdriver.Chrome("C:\Program Files\Google\Chrome\Application\chromedriver.exe")
driver.get('https://www.baidu.com')
driver.implicitly_wait(10)

#获取所有的cookies信息
print(driver.get_cookies())

#添加cookies信息
driver.add_cookie({
    
    'name':'yzl','value':'yzl111'})

#遍历所有的cookie信息
for item in driver.get_cookies():
    print(item)

#删除cookie
driver.delete_cookie('yzl')

#删除所有的cookie信息
driver.delete_all_cookies()
print(driver.get_cookies())

十二、窗口截图和关闭

截图: driver.save_screenshot(‘baidu.png’)

from selenium import webdriver
import time
driver=webdriver.Chrome("C:\Program Files\Google\Chrome\Application\chromedriver.exe")
driver.get('https://www.baidu.com')
driver.implicitly_wait(10)

time.sleep(2)
#开始截图操作
driver.save_screenshot('baidu.png')
time.sleep(2)

driver.close()

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/YZL40514131/article/details/125239474