selenium 总结

元素定位方法

tag_name

link_text

partial_link_text
一、元素定位方法
1.1 tag_name (了解)
说明:是通过元素的标签名称来定位,标签名(查看元素时尖括号(<)紧挨着的单词或字母就是标签名)
(标签名也就是元素名)
方法:driver.find_element_by_tag_name(“标签名”)
注意:
1. 如果页面中存在多个相同标签,默认返回第一个标签元素。

1.2 link_text
说明:定位超链接标签
方法:driver.find_element_by_link_text()
注意:
1. link_text:只能使用精准匹配(a标签的全部文本内容)

1.3 partial_link_text【推荐】
说明:定位超链接标签
方法:driver.find_element_by_partial_link_text()
注意:
1. 可以使用精准或模糊匹配,如果使用模糊匹配最好使用能代表唯一的关键词
2. 如果有多个值,默认返回第一个值

css定位方法详解

CSS定位
说明:
1. CSS一种标记语言,焦点:数据的样式。控制元素的显示样式,就必须先找到元素,在css标记语言中找元素使用css选择器;
2. css定位就是通过css选择器工具进行定位。
3. 极力推荐使用,查找元素的效率比xpath高,语法比xpath更简单。
方法:
driver.find_element_by_css_selector()
常用测试略:
1. id 选择器
前提:元素是必须有id属性
语法:#id 如:#passwordA
2. class 选择器
前提:元素是必须有class属性
语法:.class 如:.telA
3. 元素选择器
语法:element 如:input
4. 属性选择器
语法:[属性名=属性值]
5. 层级选择器
语法:
1. p>input
2. p input
提示:>与空格的区别,大于号必须为子元素,空格则不用。
扩展:
1. [属性^=‘开头的字母’] # 获取指定属性以指定字母开头的元素
2. [属性$=‘结束的字母’] # 获取指定属性以指定字母结束的元素
3. [属性*=‘包含的字母’] # 获取指定属性包含指定字母的元素
复制xpath:/html/body/form/div/fieldset/p[1]/input
复制最简://*[@id=“userA”]
复制CSS路径:html body form div#zc fieldset p#p1 input#userA
一、元素操作
2.1 方法
1). send_keys() # 输入方法
2). click() # 点击方法
3). clear() # 清空
2.2 提示:
1. 在输入方法之前一定要清空操作。

二、浏览器常用操作API
2.1 方法
1). driver.maximize_window() # 最大化浏览器
2). driver.set_window_size(w, h) # 设置浏览器大小 单位像素
3). driver.set_window_position(x, y) # 设置浏览器位置
4). driver.back() # 后退操作
5). driver.forward() # 前进操作
6). driver.refresh() # 刷新操作
7). driver.close() # 关闭当前主窗口(主窗口:默认启动哪个界面,就是主窗口)
8). driver.quit() # 关闭由driver对象启动的所有窗口
9). driver.title # 获取当前页面title信息
10). drive.current_url # 获取当前页面url信息

2.2 提示:
1. driver.title 和 driver.current_url 没有括号,应用场景:一般为判断上步操作是否执行成功。
2. driver.maximize_window() # 一般为我的前置代码,在获取driver后,直接编写最大化浏览器
3. driver.refresh() 应用场景,在后面的cookie章节会使用到。
4. driver.close()与driver.quit()区别:
close():关闭当前主窗口
quit():关闭由driver对象启动的所有窗口
提示:如果当前只有1个窗口,close与quit没有任何区别。

三、元素信息操作API
3.1 方法:
1). text 获取元素文本 如:driver.text
2). size 获取元素大小 如:driver.size
3). get_attribute 获取元素属性值 如:driver.get_attribute(“id”)
4). is_displayed 判断元素是否可见 如:element.is_displayed()
5). is_enabled 判断元素是否可用 如: element.is_enabled()
6). is_selected 判断元素是否被选中 如:element.is_selected()

3.2 提示:
1. text和size调用时 无括号
2. get_attribute一般应用场景:判断一组元素是否为想要的元素或者判断元素属性值是否正确
3. is_displayed、is_enabled、is_selected,在特殊应用场景中使用。

四、鼠标操作
4.1 为什么使用鼠标操作?
为了满足丰富的html鼠标效果,必须使用对应的方法。
4.2 鼠标事件对应的方法在哪个类中
ActionChains类—>导包 from selenium.webdriver.common.action_chains import ActionChains
4.3 鼠标事件常用的操作方法
1. context_click() # 右击
应用:context_click(element).perform()
2. double_click() # 双击
应用:double_click(element).perform()
3. drag_and_drop() # 拖拽
应用:drag_and_drop(source, target).perform
4. move_to_element() #悬停
应用: move_to_element(element).perform()
5. perform() # 执行以上事件方法

4.4 提示:
1. selenium框架中虽然提供了,右击鼠标方法,但是没有提供选择右击菜单方法,可以通过发送快捷键的方式解决(经测试,谷歌浏览器不支持)。

五、键盘操作
4.1 键盘对应的方法在Keys类中
包:from selenium.webdriver.common.keys import Keys
4.2 常用的快捷键:
CONTROL:Ctrl键
其他,请参考Keys底层定义的常亮
4.3 应用
组合键:element.send_keys(Keys.XXX, ‘a’)
单键:element.send_keys(Keys.XXX)

六、元素等待
6.1 为什么要设置元素等待
由于电脑配置或网络原因,在查找元素时,元素代码未在第一时间内被加载出来,而抛出未找到元素异常。
6.2 什么是元素等待
元素在第一次未找到时,元素等待设置的时长被激活,如果在设置的有效时长内找到元素,继续执行代码,如果超出设置的时长未找打元素,抛出未找到元素异常。
6.3 元素等待分类
1. 隐式等待
2. 显示等待
6.4 隐式等待
方法:driver.implicitly_wait(30) # 一般情况下设置30秒
特色:
1. 针对所有元素生效。
2. 一般情况下为前置必写代码(1.获取浏览器驱动对象;2. 最大化浏览器;3. 设置隐式等待)

6.5 显示等待
方法:WebDriverWait(driver,timeout=10, poll_frequency=0.5).until(lambda x:x.find_element_by_id(“#user”)).send_keys(“admin”)
参数:
timeout: 超时时间
poll_frequency:访问频率,默认0.5秒找一次元素
x: x为driver,它是WebDriverWait类将传入的driver赋值给类self._driver,until方法调用了self._driver;

  提示: 
     1. WebDriverWait(driver,timeout=10, poll_frequency=0.5).until(lambda x:x.find_element_by_id("#user"))返回的一个元素。

6.6 显示等待与隐式等待区别:
1. 显示等待:针对单个元素生效
2. 隐式等待:针对全局元素生效

selenium截屏代码

应用场景:失败截图,让错误看的更直观
方法:

  driver.get_screenshot_as_file(imgepath)

参数:
imagepath:为图片要保存的目录地址及文件名称
如: 当前目录 ./test.png
上一级目录 …/test.png
扩展:
1. 多条用例执行失败,会产生多张图片,可以采用时间戳的形式,进去区分。
操作:
driver.get_screenshot_as_file(“…/image/%s.png”%(time.strftime(“%Y_%m_%d %H_%M_%S”)))
strftime:将时间转为字符串函数
注意:
%Y_%m_%d %H_%M_%S:代表,年 月 日 时 分 秒

# 导包
import time
from time import strftime
from selenium import webdriver
from time import sleep
# 获取浏览器驱动对象
from selenium.webdriver.common.by import By
 
driver = webdriver.Firefox()
# 最大化浏览器
driver.maximize_window()
# 隐式等待
driver.implicitly_wait(30)
# 打开url
url = r"C:\Users\黄永生\Desktop\软件测试\P2C电子市场\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册A.html"
driver.get(url)
 
 
"""
    目标: 截屏
    方法:
        driver.get_screenshot_as_file()
    需求:
        1. 输入用户名
        2. 截图 当前目录下 admin.png
"""
# 输入 admin
driver.find_element(By.CSS_SELECTOR,"#userA").send_keys("admin")
# 调用截图方法
# driver.get_screenshot_as_file("./admin.png")
# 存放指定目录
# driver.get_screenshot_as_file("../scripts/admin02.png")
# driver.get_screenshot_as_file("../image/admin.png")
 
# 动态获取文件名称 使用时间戳
# driver.get_screenshot_as_file("../image/%s.png"%(time.strftime("%Y_%m_%d %H_%M_%S")))
# driver.get_screenshot_as_file("../image/%s.jpg"%(time.strftime("%Y_%m_%d %H_%M_%S")))
driver.get_screenshot_as_file("../image/%s.jpg"%(strftime("%Y_%m_%d %H_%M_%S")))
 
 
 
# 暂停 2
sleep(2)
# 关闭驱动对象
driver.quit()

selenium_mouse_drag_and_drop拖拽

# 导包
from selenium import webdriver
from time import sleep
 
# 获取浏览器驱动对象
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
 
driver = webdriver.Edge()
# 打开url
url = r"C:\Users\黄永生\Desktop\软件测试\P2C电子市场\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册A.html"
driver.get(url)
 
# 实例化并获取 ActionChains类
action = ActionChains(driver)
# 获取源元素
source = driver.find_element(By.CSS_SELECTOR,"#div1")
# 获取目标元素
target = driver.find_element(By.CSS_SELECTOR,"#div2")
sleep(2)
action.drag_and_drop(source, target).perform()
 
# 扩展 通过坐标偏移量执行
# action.drag_and_drop_by_offset(source, xoffset=360, yoffset=180).perform()
 
# 暂停 2
sleep(2)
# 关闭驱动对象
driver.quit()

selenium_mouse_扩展选择右键菜单

# 导包
from selenium import webdriver
from time import sleep
 
# 获取浏览器驱动对象
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
 
driver = webdriver.Edge()
# driver = webdriver.Ie()
# 谷歌浏览器不支持 --> 粘贴快捷键
# driver = webdriver.Chrome()
# 打开url
url = r"C:\Users\黄永生\Desktop\软件测试\P2C电子市场\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册A.html"
driver.get(url)
 
# 实例化并获取 ActionChains类
action = ActionChains(driver)
# 定位用户名 在用户名上 右击鼠标  预期:粘贴
# 获取用户名元素  admin123
username = driver.find_element(By.CSS_SELECTOR,"#userA")
# 点击右键
action.context_click(username).perform()
# 发送p
username.send_keys("p")
 
 
 
# 暂停 2
sleep(2)
# 关闭驱动对象
driver.quit()

selenium切换表单

提示:常用的frame表单有两种:frame、iframe
为什么要切换?
当前主目录内没有iframe表单页面元素信息,不切换,找不到元素。
如何切换?
方法:driver.switch_to.frame(“id\name\element”)
为什么要回到主目录
iframe或frame只有在主目录才有相关元素信息,不回到主目录,切换语句会报错。
如何回到主目录
方法:driver.switch_to.default_content()
提示:
1.切换frame时,可以使用name、id、iframe元素

# 导包
from selenium import webdriver
from time import sleep
# 获取浏览器驱动对象
from selenium.webdriver.common.by import By
 
driver = webdriver.Edge()
# 最大化浏览器
driver.maximize_window()
# 隐式等待
# driver.implicitly_wait(30)
# 打开url
url = r"C:\Users\黄永生\Desktop\软件测试\P2C电子市场\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册实例.html"
driver.get(url)
 
 
"""
    目标: 为什么要切换frame表单
    需求:
        1. 打开注册实例.html
        2. 填写主页面 页面信息
        3. 填写注册A 页面信息
        4. 填写注册B 页面信息
    
"""
"""填写主页面"""
# 用户名
driver.find_element(By.CSS_SELECTOR,"#user").send_keys("admin")
# 密码
driver.find_element(By.CSS_SELECTOR,"#password").send_keys("admin")
# 电话
driver.find_element(By.CSS_SELECTOR,".tel").send_keys("18611112222")
# 邮件
driver.find_element(By.CSS_SELECTOR,"#email").send_keys("123@qq.com")
 
# 切换到注册A 使用name
# driver.switch_to.frame("myframe1")
# 使用id
driver.switch_to.frame("idframe1")
 
"""填写注册A"""
# 用户名
driver.find_element(By.CSS_SELECTOR,"#userA").send_keys("admin")
# 密码
driver.find_element(By.CSS_SELECTOR,"#passwordA").send_keys("admin")
# 电话
driver.find_element(By.CSS_SELECTOR,".telA").send_keys("18611112222")
# 邮件
driver.find_element(By.CSS_SELECTOR,"#emailA").send_keys("123@qq.com")
 
# 切换到默认目录
driver.switch_to.default_content()
 
# 切换到注册B 使用name
# driver.switch_to.frame("myframe2")
# 使用元素切换
driver.switch_to.frame(driver.find_element(By.CSS_SELECTOR,"[name='myframe2']"))
 
 
 
"""填写注册B"""
# 用户名
driver.find_element(By.CSS_SELECTOR,"#userB").send_keys("admin")
# 密码
driver.find_element(By.CSS_SELECTOR,"#passwordB").send_keys("admin")
# 电话
driver.find_element(By.CSS_SELECTOR,".telB").send_keys("18611112222")
# 邮件
driver.find_element(By.CSS_SELECTOR,"#emailB").send_keys("123@qq.com")
 
 
 
# 暂停 2
sleep(2)
# 关闭驱动对象
driver.quit()

selenium表单切换

# 导包
from selenium import webdriver
from time import sleep
# 获取浏览器驱动对象
from selenium.webdriver.common.by import By
 
driver = webdriver.Edge()
# 最大化浏览器
driver.maximize_window()
# 隐式等待
# driver.implicitly_wait(30)
# 打开url
url = r"C:\Users\黄永生\Desktop\软件测试\P2C电子市场\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册实例.html"
driver.get(url)
 
 
"""
    目标: 为什么要切换frame表单
    需求:
        1. 打开注册实例.html
        2. 填写主页面 页面信息
        3. 填写注册A 页面信息
        4. 填写注册B 页面信息
    
"""
"""填写主页面"""
# 用户名
driver.find_element(By.CSS_SELECTOR,"#user").send_keys("admin")
# 密码
driver.find_element(By.CSS_SELECTOR,"#password").send_keys("admin")
# 电话
driver.find_element(By.CSS_SELECTOR,".tel").send_keys("18611112222")
# 邮件
driver.find_element(By.CSS_SELECTOR,"#email").send_keys("123@qq.com")
 
# 切换到注册A 使用name
# driver.switch_to.frame("myframe1")
# 使用id
driver.switch_to.frame("idframe1")
 
"""填写注册A"""
# 用户名
driver.find_element(By.CSS_SELECTOR,"#userA").send_keys("admin")
# 密码
driver.find_element(By.CSS_SELECTOR,"#passwordA").send_keys("admin")
# 电话
driver.find_element(By.CSS_SELECTOR,".telA").send_keys("18611112222")
# 邮件
driver.find_element(By.CSS_SELECTOR,"#emailA").send_keys("123@qq.com")
 
# 切换到默认目录
driver.switch_to.default_content()
 
# 切换到注册B 使用name
# driver.switch_to.frame("myframe2")
# 使用元素切换
driver.switch_to.frame(driver.find_element(By.CSS_SELECTOR,"[name='myframe2']"))
 
 
 
"""填写注册B"""
# 用户名
driver.find_element(By.CSS_SELECTOR,"#userB").send_keys("admin")
# 密码
driver.find_element(By.CSS_SELECTOR,"#passwordB").send_keys("admin")
# 电话
driver.find_element(By.CSS_SELECTOR,".telB").send_keys("18611112222")
# 邮件
driver.find_element(By.CSS_SELECTOR,"#emailB").send_keys("123@qq.com")
 
 
 
# 暂停 2
sleep(2)
# 关闭驱动对象
driver.quit()

selenium_定位输入框并输入值_CLASS_NAME

# 导包
from selenium import webdriver
from time import sleep
 
 
# 获取浏览器对象
from selenium.webdriver.common.by import By
 
driver = webdriver.Edge()
# 打开url
url = r"C:\Users\黄永生\Desktop\软件测试\tpshop\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册A.html"
driver.get(url)
 
# 查找电话 输入 18611111111
driver.find_element(By.CLASS_NAME,"telA").send_keys("18611111111")
 
 
# 暂停3sleep(3)
# 关闭浏览器
driver.quit()

selenium隐式等待和显式等待

元素等待
为什么要设置元素等待
由于电脑配置或网络原因,在查找元素时,元素代码未在第一时间内被加载出来,而抛出未找到元素异常。
什么是元素等待
元素在第一次未找到时,元素等待设置的时长被激活,如果在设置的有效时长内找到元素,继续执行代码,如果超出设置的时长未找打元素,抛出未找到元素异常。
元素等待分类
1. 隐式等待
2. 显示等待
3. 隐式等待
方法:driver.implicitly_wait(30) # 一般情况下设置30秒
特色:
1. 针对所有元素生效。
2. 一般情况下为前置必写代码(1.获取浏览器驱动对象;2. 最大化浏览器;3. 设置隐式等待)

显示等待
方法:WebDriverWait(driver,timeout=10, poll_frequency=0.5).until(lambda x:x.find_element_by_id(“#user”)).send_keys(“admin”)
参数:
timeout: 超时时间
poll_frequency:访问频率,默认0.5秒找一次元素
x: x为driver,它是WebDriverWait类将传入的driver赋值给类self._driver,until方法调用了self._driver;

  提示: 
     1. WebDriverWait(driver,timeout=10, poll_frequency=0.5).until(lambda x:x.find_element_by_id("#user"))返回的一个元素。

显示等待与隐式等待区别:
1. 显示等待:针对单个元素生效
2. 隐式等待:针对全局元素生效

selenium使用Select类实现操作option选项

"""
    需求:
        1. 使用css id选择器 定位用户名 输入admin
        2. 使用css 属性选择 定位密码框 输入123456
        3. 使用 css class 选择器 定位电话号码: 18611112222
        4. 使用css 元素选择器 定位span标签获取文本值
        5. 使用层级选择器 定位email 输入 123@qq.com
    方法:
        driver.find_element_by_css_selector()
        获取文本的方法 元素.text
"""
 
# 导包
from selenium import webdriver
from time import sleep
 
# 获取 浏览器驱动对象
from selenium.webdriver.common.by import By
 
driver = webdriver.Edge()
 
# 打开 注册A.html
url = r"C:\Users\黄永生\Desktop\软件测试\P2C电子市场\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册A.html"
driver.get(url)
 
# 1. 使用css id选择器 定位用户名 输入admin
driver.find_element(By.CSS_SELECTOR,"#userA").send_keys("admin")
# 2. 使用css 属性选择 定位密码框 输入123456
driver.find_element(By.CSS_SELECTOR,"[name='passwordA']").send_keys("123456")
# 3. 使用 css class 选择器 定位电话号码: 18611112222
driver.find_element(By.CSS_SELECTOR,".telA").send_keys("18611112222")
# 4. 使用css 元素选择器 定位span标签获取文本值
span = driver.find_element(By.CSS_SELECTOR,"span").text
print("获取的span标签文本值:", span)
 
# 5. 使用层级选择器 定位email 输入 123@qq.com
driver.find_element(By.CSS_SELECTOR,"p>input[placeholder='电子邮箱A']").send_keys("123@qq.com")
 
# 暂停 3sleep(3)
# 退出浏览器驱动
driver.quit()

selenium_最大化、位置、大小、前进后退

# 导包
from selenium import webdriver
from time import sleep
 
# 获取浏览器驱动对象
from selenium.webdriver.common.by import By
 
driver = webdriver.Edge()
# 打开url
url = r"C:\Users\黄永生\Desktop\软件测试\P2C电子市场\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册A.html"
driver.get(url)
 
# 将浏览器 最大化
driver.maximize_window()
# 暂停2sleep(2)
# 设置固定大小 300,200
driver.set_window_size(300, 200)
# 暂停2sleep(2)
# 移动浏览器窗口位置 x:320,y:150
driver.set_window_position(320, 150)
# 暂停2sleep(2)
# 最大化
driver.maximize_window()
sleep(1)
# 点击 访问新浪网站  注意:要演示后退功能,必须先执行打开新的网站
driver.find_element(By.LINK_TEXT,"访问 新浪 网站").click()
# 暂停2sleep(2)
# 执行后退 ---> 注册A.html
driver.back()
# 暂停2sleep(2)
# 执行前进 -->新浪 注意:前进必须放到后退操后执行
driver.forward()
 
 
# 暂停 2
sleep(2)
# 关闭驱动对象
driver.quit()

selenium拖动滚动条

为什么要操作滚动条
在web自动化中有些特殊场景,如:滚动条拉倒最底层,指定按钮才可用。
如何操作
第一步:设置操作滚动条操作语句
如:js = “window.scrollTo(0,10000)”
0: 左边距 --》水平滚动条
10000:上边距 -->垂直滚动条

  第二步:调用执行js方法,将设置js语句传入方法中
     方法:driver.execute_script(js)

在selenium中没有直接提供定位滚动条组件方法,但是它提供了执行js语句方法,可以通过js语句来控制滚动条操作。

# 导包
from selenium import webdriver
from time import sleep
# 获取浏览器驱动对象
driver = webdriver.Edge()
# 最大化浏览器
driver.maximize_window()
# 隐式等待
driver.implicitly_wait(30)
# 打开url
url = r"C:\Users\黄永生\Desktop\软件测试\P2C电子市场\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册A.html"
driver.get(url)
 
 
"""
    目标:滚动条操作
    
    需求:
        1. 启动暂停22. 滚动条拉倒最底下
"""
sleep(2)
# 第一步 设置js控制滚动条语句
js = "window.scrollTo(0, 10000)"
# 第二步 调用执行js语句方法
driver.execute_script(js)
 
 
 
# 暂停 2
sleep(2)
# 关闭驱动对象
driver.quit()

selenium鼠标操作大全

# 导包
from selenium import webdriver
from time import sleep
# 获取浏览器驱动对象
driver = webdriver.Edge()
# 打开url
url = r"C:\Users\黄永生\Desktop\软件测试\P2C电子市场\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册A.html"
driver.get(url)
"""
    目标:基于selenium完成 鼠标事件操作
    说明:
        1. selenium框架中将鼠标操作的一系列方法封装在 ActionChains类中
    方法:
        1. 双击 double_click()
        2. 右击 context_click()
        3. 悬停 move_to_element()
        4. 拖拽 drag_and_drop()
        5. 执行 perform()
    操作:
        1. 导入 ActionChains类  位置:from selenium.webdriver.common.action_chains import ActionChains
        2. 实例化
            匿名:ActionChains(driver).double_click(element).perform()
            匿名:ActionChains(driver).context_click(element).perform()
            实名:action = ActionChains(driver)
        3. 调用响应的方法:
            如:
                1. ActionChains(driver).double_click(element).perform()
                2. action.double_click(element).perform()
    注意:
        鼠标操作方法,必须调用perform()才能执行
"""
 
 
# 暂停 2
sleep(2)
# 关闭驱动对象
driver.quit()

selenium截图_get_screenshot_as_file

# 导包
import time
from time import strftime
from selenium import webdriver
from time import sleep
# 获取浏览器驱动对象
from selenium.webdriver.common.by import By
 
driver = webdriver.Firefox()
# 最大化浏览器
driver.maximize_window()
# 隐式等待
driver.implicitly_wait(30)
# 打开url
url = r"C:\Users\黄永生\Desktop\软件测试\P2C电子市场\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册A.html"
driver.get(url)
 
 
"""
    目标: 截屏
    方法:
        driver.get_screenshot_as_file()
    需求:
        1. 输入用户名
        2. 截图 当前目录下 admin.png
"""
# 输入 admin
driver.find_element(By.CSS_SELECTOR,"#userA").send_keys("admin")
# 调用截图方法
# driver.get_screenshot_as_file("./admin.png")
# 存放指定目录
# driver.get_screenshot_as_file("../scripts/admin02.png")
# driver.get_screenshot_as_file("../image/admin.png")
 
# 动态获取文件名称 使用时间戳
# driver.get_screenshot_as_file("../image/%s.png"%(time.strftime("%Y_%m_%d %H_%M_%S")))
# driver.get_screenshot_as_file("../image/%s.jpg"%(time.strftime("%Y_%m_%d %H_%M_%S")))
driver.get_screenshot_as_file("../image/%s.jpg"%(strftime("%Y_%m_%d %H_%M_%S")))

# 暂停 2
sleep(2)
# 关闭驱动对象
driver.quit()

selenium浏览器常用操作

浏览器常用操作API
2.1 方法
1). driver.maximize_window() # 最大化浏览器

  2). driver.set_window_size(w, h) # 设置浏览器大小 单位像素

  3). driver.set_window_position(x, y) # 设置浏览器位置

  4). driver.back() # 后退操作

  5). driver.forward() # 前进操作

  6). driver.refresh() # 刷新操作

  7). driver.close() # 关闭当前主窗口(主窗口:默认启动哪个界面,就是主窗口)

  8). driver.quit() # 关闭由driver对象启动的所有窗口

  9). driver.title # 获取当前页面title信息

  10). drive.current_url # 获取当前页面url信息

2.2 提示:

  1. driver.title 和 driver.current_url 没有括号,应用场景:一般为判断上步操作是否执行成功。

  2. driver.maximize_window() # 一般为我的前置代码,在获取driver后,直接编写最大化浏览器

  3. driver.refresh() 应用场景,在后面的cookie章节会使用到。

  4. driver.close()与driver.quit()区别:
     close():关闭当前主窗口
     quit():关闭由driver对象启动的所有窗口

     提示:如果当前只有1个窗口,close与quit没有任何区别。

selenium_鼠标_点击、移动、输入

# 导包
 
from selenium import webdriver
from time import sleep
 
# 获取浏览器驱动对象
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
 
driver = webdriver.Edge()
# 打开url
url = r"C:\Users\黄永生\Desktop\软件测试\P2C电子市场\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册A.html"
driver.get(url)
 
# 实例化并获取 ActionChains类
action = ActionChains(driver)
# 定位用户名 在用户名上 右击鼠标  预期:粘贴
# 获取用户名元素
username = driver.find_element(By.CSS_SELECTOR,"#userA")
# 调用右击方法
ActionChains(driver).context_click(username).perform()
username.send_keys(Keys.ALT)
sleep(2)
 
# 发送用户名 admin 并进行双击  预期:选中admin
pwd = driver.find_element(By.CSS_SELECTOR,"#passwordA")
pwd.send_keys("admin")
ActionChains(driver).double_click(pwd).perform()
sleep(2)
# 移动到注册按钮上  预期:按钮变色 出现 加入会员A
ActionChains(driver).move_to_element(driver.find_element(By.CSS_SELECTOR,"button")).perform()
 
 
# 暂停 2
sleep(2)
# 关闭驱动对象
driver.quit()

selenium软件测试验证码处理

验证码
什么是验证码?
一种随机生成信息(文字、数字、图片)
验证码作用
防止恶意请求
验证码处理方式
1. 去掉验证码(项目在测试环境、公司自己的项目)
2. 设置万能验证码(测试环境或线上环境,公司自己项目)
3. 使用验证码识别技术 (由于现在的验证码千奇百怪,导致识别率太低)
4. 使用cookie解决(推荐)
cookie 介绍:
生成:由服务器生成
作用:标识一次对话的状态(登录的状态)
使用:浏览器自动记录cookie,在下一条请求时将cookis信息自动附加请求
应用:
方法:
1. driver.get_cookies() # 获取所有的cookie
2. driver.add_cookies({字典}) # 设置cookie
步骤:
1. 打开百度url driver.get(“http://www.baidu.com”)
2. 设置cookie信息: driver.add_cookie({“name”:“BDUSS”,“value”:“根据实际情况编写”})
3. 暂停2秒以上
4. 刷新操作
注意:
6. 以上百度BDUSS所需格式为百度网站特有,别的网站请自行测试。
7. 必须进行刷新操作。

selenium操作选择框CSS_SELECTOR

# 导包
from selenium import webdriver
from time import sleep
# 获取浏览器驱动对象
from selenium.webdriver.common.by import By
 
driver = webdriver.Edge()
# 最大化浏览器
driver.maximize_window()
# 隐式等待
driver.implicitly_wait(30)
# 打开url
url = r"C:\Users\黄永生\Desktop\软件测试\P2C电子市场\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册A.html"
driver.get(url)
 
 
"""
    目标: 默认北京A
        暂停2秒
        1. 定位 A上海
        2. 暂停2秒
        3. 定位 A广州
"""
"""方式1:使用CSS定位"""
sleep(2)
# 使用css定位来操作 A上海
driver.find_element(By.CSS_SELECTOR,"[value='sh']").click()
sleep(2)
# 使用css定位 A广州
driver.find_element(By.CSS_SELECTOR,"[value='gz']").click()
 
 
 
# 暂停 2
sleep(2)
# 关闭驱动对象
driver.quit()

selenium_元素常用信息操作方法

# 导包
from selenium import webdriver
from time import sleep
 
# 获取浏览器驱动对象
from selenium.webdriver.common.by import By
 
driver = webdriver.Edge()
# 将浏览器 最大化
# driver.maximize_window()
# 打开url
url = r"C:\Users\黄永生\Desktop\软件测试\P2C电子市场\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册A.html"
driver.get(url)
 
# 获取用户名文本框大小
size = driver.find_element(By.CSS_SELECTOR,"#user").size
print("用户名大小为:", size)
# 获取页面上第一个超文本连接内容
text = driver.find_element(By.CSS_SELECTOR,"a").text
print("页面中第一个a标签为:", text)
# 获取页面上第一个超文本链接地址 get_attribute("href")
att = driver.find_element(By.CSS_SELECTOR,"a").get_attribute("href")
print("页面中第一个a标签为href属性值为:", att)
 
# 判断 span元素是否可见
display = driver.find_element(By.CSS_SELECTOR,"span").is_displayed()
print("span元素是否可见:", display)
 
# 判断 取消按钮是否可用
enabled = driver.find_element(By.CSS_SELECTOR,"#cancel").is_enabled()
print("取消按钮是否可用:", enabled)
 
# 选中旅游按钮
driver.find_element(By.CSS_SELECTOR,"#ly").click()
 
# 判断旅游是否被选中
selected = driver.find_element(By.CSS_SELECTOR,"#ly").is_selected()
print("旅游是否被选中:", selected)
 
 
# 暂停 2
sleep(2)
# 关闭驱动对象
driver.quit()

selenium多窗口切换

为什么要切换多窗口?
页面存在多个窗口式,seleniu默认焦点只会在主窗口上所有的元素,不切换切换窗口,无法操作除主窗口以外的窗口内元素
如何切换?
思路:获取要切换的窗口句柄,调用切换方法进行切换。
方法:
1. driver.current_window_handle # 获取当前主窗口句柄
2. driver.window_handles # 获取当前由driver启动所有窗口句柄
3. driver.switch_to.window(handle) # 切换窗口
步骤:
1. 获取当前窗口句柄
2. 点击链接 启动另一个窗口
3. 获取当前所有窗口句柄
4. 遍历所有窗口句柄
5. 判断当前遍历的窗口句柄不等于当前窗口句柄
6. 切换窗口操作

# 导包
from selenium import webdriver
from time import sleep
# 获取浏览器驱动对象
from selenium.webdriver.common.by import By
 
driver = webdriver.Edge()
# 最大化浏览器
driver.maximize_window()
# 隐式等待
# driver.implicitly_wait(30)
# 打开url
url = r"C:\Users\黄永生\Desktop\软件测试\P2C电子市场\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册实例.html"
driver.get(url)
 
 
"""
    目标: 切换窗口
    需求:
        1. 打开注册实例.html
        2. 点击 注册A网页
        3. 填写 注册A网页 内容
        
        
    
"""
 
# 获取当前窗口句柄  -->目的:判断只要不是当前主窗口句柄,就一定时新开的窗口句柄
current_handle = driver.current_window_handle
print("当前窗口句柄为:", current_handle)
# 点击注册A网页
driver.find_element(By.PARTIAL_LINK_TEXT,"A网页").click()
 
# 获取所有窗口句柄
handles = driver.window_handles
print("所有窗口句柄:", handles)
 
# 判断 不是 当前窗口句柄
for h in handles:
    if h != current_handle:
        # 切换
        driver.switch_to.window(h)
        """填写注册A"""
        # 用户名
        driver.find_element(By.CSS_SELECTOR,"#userA").send_keys("admin")
        # 密码
        driver.find_element(By.CSS_SELECTOR,"#passwordA").send_keys("admin")
        # 电话
        driver.find_element(By.CSS_SELECTOR,".telA").send_keys("18611112222")
        # 邮件
        driver.find_element(By.CSS_SELECTOR,"#emailA").send_keys("123@qq.com")
 
 
# 暂停 2
sleep(2)
# 关闭驱动对象
driver.quit()

selenium_定位tag_name

"""
    需求:
        1. 使用tag_name定位方式,使用注册A.html页面,用户名输入admin
    方法:
        1. driver.find_element_by_tag_name("") # 定位元素方法
        2. send_keys() # 输入方法
        3. driver.quit() # 退出方法
"""
 
# 导包
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By
 
# 获取 浏览器驱动对象
driver = webdriver.Edge()
 
# 打开 注册A.html
url = r"C:\Users\黄永生\Desktop\软件测试\P2C电子市场\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册A.html"
driver.get(url)
 
# 使用tag_name定位用户名 并 输入admin
# 注意:页面中如果存在多个相同的标签名,默认返回第一个标签
driver.find_element(By.TAG_NAME,"input").send_keys("admin")
 
# 暂停 3秒
sleep(3)
# 退出浏览器驱动
driver.quit()

selenium显示等待

确保页面元素在特定条件下加载完毕后再执行后续操作。显示等待可以通过WebDriverWait类和ExpectedConditions类来实现。通过使用显示等待,可以避免在页面元素还未加载完毕时就进行操作,从而提高测试的稳定性和可靠性。

# 导包
from selenium import webdriver
from time import sleep
# 获取浏览器驱动对象
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
 
driver = webdriver.Edge()
driver.maximize_window()
# 设置元素等待  隐式等待 重要重要重要!!!
# 打开url
url = r"C:\Users\黄永生\Desktop\软件测试\P2C电子市场\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册A.html"
driver.get(url)
 
"""
    目标:显示等待使用
    操作:
        1. 导包 WebDriverWait()类
        2. 实例化WebDriverWait()类并调用until(method)方法
        method:匿名函数
        lambda x:x.find_element_by_id()
        
    需求:
        定位用户名输入admin
"""
# 实例化WebDriverWait()并调用until方法
# 注意:调用until方法返回的一定是一个元素
WebDriverWait(driver, timeout=10, poll_frequency=0.5).until(lambda x:x.find_element(By.ID,"#user")).send_keys("admin")
# 注意:此时username还不是元素,只有代码运行起来才是元素
# username.send_keys("admin")
 
 
# 写法2
# 获取 WebDriverWait示例对象
wait= WebDriverWait(driver,timeout=10, poll_frequency=0.5)
# 获取元素
username = wait.until(lambda x:x.find_element_by_id("#user"))
# 发送内容
username.send_keys("admin")
# 暂停 2
sleep(2)
# 关闭驱动对象
driver.quit()

selenium多窗口切换与选择

# 获取浏览器驱动对象
from selenium.webdriver.common.by import By
 
driver = webdriver.Edge()
# 最大化浏览器
driver.maximize_window()
# 隐式等待
# driver.implicitly_wait(30)
# 打开url
url = r"C:\Users\黄永生\Desktop\软件测试\P2C电子市场\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册实例.html"
driver.get(url)
 
 
"""
    目标: 切换窗口
    需求:
        1. 打开注册实例.html
        2. 点击 注册A网页
        3. 填写 注册A网页 内容
        
        
    
"""
 
# 获取当前窗口句柄  -->目的:判断只要不是当前主窗口句柄,就一定时新开的窗口句柄
current_handle = driver.current_window_handle
print("当前窗口句柄为:", current_handle)
# 点击注册A网页
driver.find_element(By.PARTIAL_LINK_TEXT,"A网页").click()
 
# 获取所有窗口句柄
handles = driver.window_handles
print("所有窗口句柄:", handles)
 
# 判断 不是 当前窗口句柄
for h in handles:
    if h != current_handle:
        # 切换
        driver.switch_to.window(h)
        """填写注册A"""
        # 用户名
        driver.find_element(By.CSS_SELECTOR,"#userA").send_keys("admin")
        # 密码
        driver.find_element(By.CSS_SELECTOR,"#passwordA").send_keys("admin")
        # 电话
        driver.find_element(By.CSS_SELECTOR,".telA").send_keys("18611112222")
        # 邮件
        driver.find_element(By.CSS_SELECTOR,"#emailA").send_keys("123@qq.com")
 
 
# 暂停 2
sleep(2)
# 关闭驱动对象
driver.quit()

selenium_alert_处理

# 导包
from selenium import webdriver
from time import sleep
# 获取浏览器驱动对象
from selenium.webdriver.common.by import By
 
driver = webdriver.Firefox()
# 最大化浏览器
driver.maximize_window()
# 隐式等待
driver.implicitly_wait(30)
# 打开url
url = r"C:\Users\黄永生\Desktop\软件测试\P2C电子市场\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册A.html"
driver.get(url)
 
"""
    需求:
        1. 点击 alert按钮
        2. 输入用户名 admin
"""
# 定位 alert按钮 并 点击
driver.find_element(By.CSS_SELECTOR,"#alerta").click()
 
# 切换 到alert
# 默认返回的alert对话框对象
at = driver.switch_to.alert
 
# 处理 对话框
# 同意
at.accept()
 
# 获取文本
# print("警告信息:", at.text)
 
# 取消
# at.dismiss()
 
# 定位 用户名 输入admin
driver.find_element(By.CSS_SELECTOR,"#userA").send_keys("admin")
 
# 暂停 2
sleep(2)
# 关闭驱动对象
driver.quit()

selenium_使用XPATH定位

"""
    需求:
        1. 使用绝对路径定位 用户名 输入 admin
        2. 暂停2秒钟
        3. 使用相对路径定位 密码框 输入 123
    方法:
        driver.find_element_by_xpath()
"""
 
# 导包
from selenium import webdriver
from time import sleep
 
 
# 获取 浏览器驱动对象
from selenium.webdriver.common.by import By
 
driver = webdriver.Edge()
 
# 打开 注册A.html
url = r"C:\Users\黄永生\Desktop\软件测试\P2C电子市场\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册A.html"
driver.get(url)
 
# 使用绝对路径定位 用户名 admin
# driver.find_element_by_xpath("/html/body/form/div/fieldset/p[1]/input").send_keys("admin")
 
# 使用层级结合属性 定位用户名:
driver.find_element(By.XPATH,"//p[@id='p1']/input").send_keys("admin")
 
# 暂停2秒
sleep(2)
 
# 使用相对路径 定位 密码  123
# driver.find_element_by_xpath("//input[@id='passwordA']").send_keys("123")
 
 
# 使用逻辑结合
driver.find_element(By.XPATH,"//input[@id='passwordA' and @placeholder='密码A']").send_keys("123")
# 暂停 3秒
sleep(3)
# 退出浏览器驱动
driver.quit()

selenium隐式等待

# 导包
from selenium import webdriver
from time import sleep
# 获取浏览器驱动对象
from selenium.webdriver.common.by import By
 
driver = webdriver.Edge()
# 设置元素等待  隐式等待 重要重要重要!!!
# 设置隐式等待10秒。
driver.implicitly_wait(10)
# 打开url
url = r"C:\Users\黄永生\Desktop\软件测试\P2C电子市场\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册A.html"
driver.get(url)
 
"""
    目标:隐式等待使用
"""
# 给一个错误的id,不能知道,如果直接抛出异常,说明等待失效。如果在设置指定时长以外抛出说明等待生效。
driver.find_element(By.CSS_SELECTOR,"#user").send_keys("admin")
 
 
# 暂停 2
sleep(2)
# 关闭驱动对象
driver.quit()

selenium_实现复制粘贴

# 导包
from selenium import webdriver
from time import sleep
 
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
 
 
# 获取浏览器驱动对象
driver = webdriver.Edge()
# 打开url
url = r"C:\Users\黄永生\Desktop\软件测试\P2C电子市场\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册A.html"
driver.get(url)
"""
    目标:学习使用基于selenium完成键盘操作
    案例:
        1. 输入用户名admin1
        2. 删除 1 
        3. 全选 用户名 "admin"  Ctrl+A
        4. 复制 admin Ctrl+C
        5. 粘贴 将复制的admin粘贴到密码框
    分析:
        1. 导包 Keys
        2. 调用 send_keys(Keys.XXX,'a')
        
"""
# 定位 用户名
username = driver.find_element(By.CSS_SELECTOR,"#userA")
# 输入 admin1
username.send_keys("admin1")
sleep(2)
# 删除1
username.send_keys(Keys.BACK_SPACE)
 
sleep(2)
 
# 全选 admin Ctrl+a
username.send_keys(Keys.CONTROL, "a")
sleep(2)
 
# 复制 Ctrl+c
username.send_keys(Keys.CONTROL, "c")
sleep(2)
 
# 定位密码框 并执行 Ctrl+v
driver.find_element(By.CSS_SELECTOR,"#passwordA").send_keys(Keys.CONTROL, "v")
 
# 暂停 2
sleep(2)
# 关闭驱动对象
driver.quit()

selenium_清空输入框的内容

driver.find_element(By.CSS_SELECTOR,“.telA”).clear()

# 导包
from selenium import webdriver
from time import sleep
 
# 获取浏览器驱动对象
from selenium.webdriver.common.by import By
 
driver = webdriver.Edge()
 
# 打开url
url = r"C:\Users\黄永生\Desktop\软件测试\P2C电子市场\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册A.html"
driver.get(url)
# 输入 admin
driver.find_element(By.CSS_SELECTOR,"#userA").send_keys("admin")
# 输入 密码 123456
driver.find_element(By.CSS_SELECTOR,"#passwordA").send_keys("123456")
 
# 输入 电话 18611112222
driver.find_element(By.CSS_SELECTOR,".telA").send_keys("18611112222")
 
# 输入 邮箱 123@qq.com
driver.find_element(By.CSS_SELECTOR,"#emailA").send_keys("123@qq.com")
 
# 暂停2秒
sleep(2)
 
# 修改电话号码 18622223333  -->清空操作
driver.find_element(By.CSS_SELECTOR,".telA").clear()
driver.find_element(By.CSS_SELECTOR,".telA").send_keys("18622223333")
# 暂停2秒
sleep(2)
# 点击注册按钮
driver.find_element(By.CSS_SELECTOR,"button").click()
# 暂停 2
sleep(2)
# 关闭驱动对象
driver.quit()

selenium_定位link_text

"""
    需求:
        1. 使用link_text定位方式,使用注册A.html页面,点击 访问 新浪 网站 连接地址
    方法:
        1. driver.find_element_by_link_text("") # 定位元素方法
        2. click() # 点击方法
    注意:
        link_text:
            1. 只能定位a标签
            2. link_text定位元素的内容必须为全部匹配
"""
 
# 导包
from selenium import webdriver
from time import sleep
 
 
# 获取 浏览器驱动对象
from selenium.webdriver.common.by import By
 
driver = webdriver.Edge()
 
# 打开 注册A.html
url = r"C:\Users\黄永生\Desktop\软件测试\P2C电子市场\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册A.html"
driver.get(url)
 
# 使用 link_text定位 访问 新浪 网站 <全部匹配>
driver.find_element(By.LINK_TEXT,"访问 新浪 网站").click()
# 错误写法,没有全部匹配文本
# driver.find_element_by_link_text("访问").click()
 
# 暂停 3秒
sleep(3)
# 退出浏览器驱动
driver.quit()

selenium_定位输入框并输入值_id

from time import sleep
 
from selenium import webdriver
 
# 获取浏览器对象
driver = webdriver.Edge()
# 打开 url
url = r"C:\Users\黄永生\Desktop\软件测试\tpshop\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册A.html"
driver.get(url)
# 查找元素 用户名 并 输入admin
driver.find_element("id","userA").send_keys("admin")
# 查找元素 密码框 并 输入123456
driver.find_element("id","passwordA").send_keys("123456")
# 暂停3秒
sleep(3)
# 关闭浏览器驱动对象
driver.quit()

selenium_定位By.PARTIAL_LINK_TEXT

"""
    需求:
        1. 使用partial_link_text定位方式,使用注册A.html页面,点击 访问 新浪 网站 连接地址
    方法:
        1. driver.find_element_by_partial_link_text("") # 定位元素方法
        2. click() # 点击方法
    注意:
        partial_link_text:
            1. 只能定位a标签
            2. partial_link_text定位元素的内容可以模糊部分值,但是必须能代表唯一性
"""
 
# 导包
from selenium import webdriver
from time import sleep
 
 
# 获取 浏览器驱动对象
from selenium.webdriver.common.by import By
 
driver = webdriver.Edge()
 
# 打开 注册A.html
url = r"C:\Users\黄永生\Desktop\软件测试\P2C电子市场\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册A.html"
driver.get(url)
 
# 使用partial_link_text定位 使用模糊 唯一代表关键词
# driver.find_element(By.PARTIAL_LINK_TEXT,"访问").click()
 
# 没有使用唯一代表词  默认操作符合条件的第一个元素
# driver.find_element(By.PARTIAL_LINK_TEXT,"新浪").click()
 
# 使用全部匹配
driver.find_element(By.PARTIAL_LINK_TEXT,"访问 新浪 网站").click()
 
# 暂停 3秒
sleep(3)
# 退出浏览器驱动
driver.quit()

selenium拉动滚动条

# 导包
from selenium import webdriver
from time import sleep
# 获取浏览器驱动对象
driver = webdriver.Edge()
# 最大化浏览器
driver.maximize_window()
# 隐式等待
driver.implicitly_wait(30)
# 打开url
url = r"C:\Users\黄永生\Desktop\软件测试\P2C电子市场\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册A.html"
driver.get(url)
 
 
"""
    目标:滚动条操作
    
    需求:
        1. 启动暂停2秒
        2. 滚动条拉倒最底下
"""
sleep(2)
# 第一步 设置js控制滚动条语句
js = "window.scrollTo(0, 10000)"
# 第二步 调用执行js语句方法
driver.execute_script(js)
 
 
 
# 暂停 2
sleep(2)
# 关闭驱动对象
driver.quit()

selenium_使用正则表达式定位_css_selector

"""
    需求:
        1. 使用css id选择器 定位用户名 输入admin
        2. 使用css 属性选择 定位密码框 输入123456
        3. 使用 css class 选择器 定位电话号码: 18611112222
        4. 使用css 元素选择器 定位span标签获取文本值
        5. 使用层级选择器 定位email 输入 123@qq.com
    方法:
        driver.find_element_by_css_selector()
        获取文本的方法 元素.text
"""
 
# 导包
from selenium import webdriver
from time import sleep
 
# 获取 浏览器驱动对象
from selenium.webdriver.common.by import By
 
driver = webdriver.Edge()
 
# 打开 注册A.html
url = r"C:\Users\黄永生\Desktop\软件测试\P2C电子市场\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册A.html"
driver.get(url)
 
# 1. 使用css id选择器 定位用户名 输入admin 以指定字母开头 语法:[属性^='开头的字母']
driver.find_element(By.CSS_SELECTOR,"[name^='us']").send_keys("admin")
# 2. 使用css 属性选择 定位密码框 输入123456 以指定字母结束 语法:[属性$='结束的字母']
driver.find_element(By.CSS_SELECTOR,"[name$='dA']").send_keys("123456")
# 3. 使用 css class 选择器 定位电话号码: 18611112222 包含指定字母 语法:[属性*='包含字母']
driver.find_element(By.CSS_SELECTOR,"[class*='el']").send_keys("18611112222")
# 4. 使用css 元素选择器 定位span标签获取文本值
span = driver.find_element(By.CSS_SELECTOR,"span").text
print("获取的span标签文本值:", span)
 
# 5. 使用层级选择器 定位email 输入 123@qq.com
driver.find_element(By.CSS_SELECTOR,"p>input[placeholder='电子邮箱A']").send_keys("123@qq.com")
 
# 暂停 3秒
sleep(3)
# 退出浏览器驱动
driver.quit()

selenium上传文件

# 导包
from selenium import webdriver
from time import sleep
# 获取浏览器驱动对象
from selenium.webdriver.common.by import By
 
driver = webdriver.Edge()
 
# 打开url
url = r"C:\Users\黄永生\Desktop\软件测试\P2C电子市场\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册A.html"
driver.get(url)
# 错误的实现
# driver.find_element_by_css_selector("[name='upfilea']").click()
# 正确实现,使用 send_keys("文件路径及文件名")
driver.find_element(By.CSS_SELECTOR,"[name='upfilea']").send_keys("D:\hello123.txt")
 
 
# 暂停 2
sleep(2)
# 关闭驱动对象
driver.quit()

selenium_refresh、close、quit、title、current_rul

# 导包
from selenium import webdriver
from time import sleep
 
# 获取浏览器驱动对象
from selenium.webdriver.common.by import By
 
driver = webdriver.Edge()
# 将浏览器 最大化
# driver.maximize_window()
# 打开url
url = r"C:\Users\黄永生\Desktop\软件测试\P2C电子市场\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册A.html"
driver.get(url)
 
# 用户名输入 admin  目的:刷新完成--清空
driver.find_element(By.CSS_SELECTOR,"#userA").send_keys("admin")
# 暂停2秒
sleep(2)
# 刷新
driver.refresh()
# 获取title
title = driver.title
print("当前页面title为:", title)
# 获取当前url
current_rul = driver.current_url
print("当前页面url地址为:", current_rul)
 
# 点击 新浪 打开新窗口
driver.find_element(By.LINK_TEXT,"访问 新浪 网站").click()
# 暂停 3秒
sleep(3)
# 关闭主窗口
driver.close()
  • 16
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值