一.下拉选项框操作
使用前需要导入
from selenium.webdriver.support.select import Select
1.根据索引值定位指定选项
select_by_index(index)
2.根据value属性值定位指定选项
select_by_value(value)
3.根据文本定位指定选项
select_by_visible_text(text)
使用后下拉框会直接更换到对应的内容,不会观察到下拉框
代码定位文件路径中由于文件名字开头为r所以会自动认定特殊字符,只需要多加一个\便可以解决
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select
driver = webdriver.Chrome()
url = "C:\game\TestProject\TestProject\\register.html"
driver.get(url)
driver.maximize_window()
# 定位下拉选择框
element = driver.find_element(By.XPATH,"//*[@id='selectA']")
select = Select(element)
# 1.根据索引值定位“广州”选项
select.select_by_index(2)
sleep(2)
# 2.根据value值定位“上海”选项
select.select_by_value("sh")
sleep(2)
# 3.根据文本定位“深圳”选项
select.select_by_visible_text("深圳")
sleep(2)
driver.quit()
二.弹出框操作
需要在界面中获取弹出框driver.switch_to.alert,直接使用便可以,不需要获取具体的位置
accept(),接收弹出框的消息,例如点击弹出窗中的确定
dismiss(),取消弹出框的消息,例如点击弹出窗中的取消
send_keys(),向弹出框输入消息
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
url = "C:\game\TestProject\TestProject\html\\alert.html"
driver.get(url)
driver.maximize_window()
# 定位“提示框”按钮并实现该按钮的单击事件
driver.find_element(By.ID,"alerta").click()
sleep(2)
alert_message = driver.switch_to.alert
print(alert_message.text)
# 调用accept()方法
alert_message.accept()
# 定位“确认框”按钮并实现该按钮的单击事件
driver.find_element(By.ID,"confirma").click()
sleep(2)
confirm_message = driver.switch_to.alert
print(confirm_message.text)
confirm_message.accept()
# 定位“输入框”按钮并实现该按钮的单击事件
driver.find_element(By.ID,"prompta").click()
sleep(2)
# 获取输入框的文字信息
prompt_message = driver.switch_to.alert
print(prompt_message.text)
prompt_message.accept()
driver.quit()
三.截图操作
get_screenshot_as_file(filename),获取页面,并将截图保存到自己所放的路径下,需要写出截图的命名
save_screenshot(filename),只需要截图文件的命名便可以,自动保存到项目的根目录中
get_screenshot_as_base64(),获取页面的base64编码字符串数据
get_screenshot_as_png(),获取页面截图的二进制数据
四.多窗口切换
driver.current_window_handle,获取当前窗口的句柄
driver.window_handles,获取所有窗口的句柄
driver.switch_to.window(handle),切换到指定的窗口
使用方法:首先定义一个获取所有窗口的名字,例如handle2 = driver.window_handles,之后handle2存储的方式为列表,所以使用时例如driver.switch_to.window(handle2[0]),括号中内容为对用窗口的句柄
实例代码如下
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://www.jd.com/")
driver.maximize_window()
# 当前窗口的句柄
handle1 = driver.current_window_handle
print("输出当前窗口的句柄:", handle1)
# 定位并单击“京东超市”链接
driver.find_element(By.PARTIAL_LINK_TEXT,"我的订单").click()
# 所有窗口句柄
handle2 = driver.window_handles
print("输出所有窗口的句柄:", handle2)
sleep(3)
# 切换到指定窗口
driver.switch_to.window(handle2[0])
handle3 = driver.current_window_handle
sleep(10)
print("输出当前窗口的句柄:", handle3)
五.多表单切换
driver.switch_to.frame(frame_reference),括号中内容为,表单的id
在同一个网页中切换表单
from time import sleep
from selenium.webdriver.common.by import By
from selenium import webdriver
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("C:\game\Chapter03\\frameswitch.html")
first_iframe = driver.find_element(By.ID, "idframe1")
driver.switch_to.frame(first_iframe)
driver.find_element(By.ID, "AuserA").send_keys("admin")
sleep(2)
driver.switch_to.default_content()
second_iframe = driver.find_element(By.ID, "idframe2")
driver.switch_to.frame(second_iframe)
driver.find_element(By.ID, "BuserA").send_keys("admin")
sleep(2)
driver.quit()
六.元素等待
使用前需要导入包from selenium.webdriver.support.wait import WebDriverWait
1.显示等待
WebDriverWait(driver,timeout,poll_frequency= ,ignored_exceptions=)
代表的内容分别为前两个为必须有的参数,浏览器驱动,最长的等待时间,第三个为查找元素的默认时间,默认0.5,使用过程中可以直接写数字,最后一个为可以被忽略的集合
until(method,message=''),第一个是一个匿名参数,例如:每隔一段时间调用该函数,直到这个函数返回True,第二个参数表示超时后的异常信息,可以不填写。
使用方法例如:a=WebDriverWait(driver,5,0.5).until(lambda p: p.find_element(By.CLASS_NAME,"lg-button"))
p为设定好的页面
until_not(method,message='')与until相反,false为查找成功
2.隐式等待
implictly_wait(timeout)括号中代表等待的时间
用法例如:设置登录页面的隐式等待
dirver.implictly_wait(10)只有在页面加载完毕或10秒后才会继续运行
3.强制等待
sleep(seconds)程序休眠一段时间,在运行
七.Cookie处理
WEB服务器生成的数据都以Cookie的形式保存在浏览器的小文本中
driver.get_cookie(),获取指定cookie
driver.get_cookies(),获取网站所有cookie
driver.add_cookie(),添加cookie
driver.delete_cookie(),删除指定cookie
driver.delete_all_cookies(),删除所有cookie
获取到的信息都是由字典的形式展现
以获取百度的cookie为例
from selenium import webdriver
from time import sleep
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("https://www.baidu.com/")
cookie1 = driver.get_cookies()
print("获取当前页面下的所有Cookie信息:", cookie1)
# 添加Cookie
driver.add_cookie({'name': 'testname', 'value': '123456'})
# 获取指定Cookie
print("获取指定Cookie信息:", driver.get_cookie('testname'))
# 删除指定Cookie
driver.delete_cookie("testname")
# 删除所有Cookie
driver.delete_all_cookies()
sleep(2)
driver.quit()
八.文件的上传与下载
1.文件上传
如果按钮由<input>标签实现的只需要如下便可以上传,例如上传png文件
a=driver.find_element(By.NAME,"file").send_keys(c:\image.png)
2.文件下载
Selenium WebDriver中并没有提供对应的方法来测试文件的下载,所以下载时需要自己用自动化脚本在页面中点击所给与的下载路径,例如:预约管理-预约设置-模版下载,按顺序写出脚本进行下载。
但是在过程中我们可以更改管理器的设置,例如禁止弹出窗口('profile.default_content_settings.popups': 0,代表禁止弹出窗口),下载路径
prefs = {'profile.default_content_settings.popups': 0,
'download.default_directory': 'D:\\downloadFile'}
options.add_experimental_option('prefs', prefs)
driver = webdriver.Chrome(options=options)
九.执行JavaScript脚本
1.控制浏览器滚动条
使用方法示例:
a=“window.scrllTo(800,800)”
driver.execute_script(a)
设置横滚动条坐标值移动到800,纵滚动条坐标值移动到800
a=“window.scrllTo(0,document.cody.scrollHeight)”纵滚动条移动到底部
a=“window.scrllTo(0,0)”纵滚动条与横滚动条回到初始的位置
a=“window.scrllTo(document.cody.scrollWeight,0)”横滚动条滚动到最右侧
2.处理日期控件
将日期改为2021-10-13如下
DateJS = "document.getElementById('train_date').value='2021-10-13'"
driver.execute_script(DateJS)
DateJS为定位到日期的位置,并选择对用的日期
版权归原作者 樱小路奈希 所有, 如有侵权,请联系我们删除。