使用WebDriver类中的__<img>标记中规定图像url的属性是可以获取当前页面的URL地址?

元素定位方法tag_namelink_textpartial_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 如:#passwordA2. class 选择器前提:元素是必须有class属性语法:.class 如:.telA3. 元素选择器语法:element 如:input4. 属性选择器语法:[属性名=属性值]5. 层级选择器语法:1. p>input2. 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. 在输入方法之前一定要清空操作。二、浏览器常用操作API2.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没有任何区别。三、元素信息操作API3.1 方法:1). text 获取元素文本 如:driver.text2). size 获取元素大小 如:driver.size3). 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 ActionChains4.3 鼠标事件常用的操作方法1. context_click() # 右击应用:context_click(element).perform()2. double_click() # 双击应用:double_click(element).perform()3. drag_and_drop() # 拖拽应用:drag_and_drop(source, target).perform4. move_to_element() #悬停应用: move_to_element(element).perform()5. perform() # 执行以上事件方法4.4 提示:1. selenium框架中虽然提供了,右击鼠标方法,但是没有提供选择右击菜单方法,可以通过发送快捷键的方式解决(经测试,谷歌浏览器不支持)。五、键盘操作4.1 键盘对应的方法在Keys类中包:from selenium.webdriver.common.keys import Keys4.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")
# 暂停3秒
sleep(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")
# 暂停 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.maximize_window()
# 暂停2秒
sleep(2)
# 设置固定大小 300,200
driver.set_window_size(300, 200)
# 暂停2秒
sleep(2)
# 移动浏览器窗口位置 x:320,y:150
driver.set_window_position(320, 150)
# 暂停2秒
sleep(2)
# 最大化
driver.maximize_window()
sleep(1)
# 点击 访问新浪网站
注意:要演示后退功能,必须先执行打开新的网站
driver.find_element(By.LINK_TEXT,"访问 新浪 网站").click()
# 暂停2秒
sleep(2)
# 执行后退 ---> 注册A.html
driver.back()
# 暂停2秒
sleep(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. 启动暂停2秒
2. 滚动条拉倒最底下
"""
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浏览器常用操作
浏览器常用操作API2.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() # 获取所有的cookie2. 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_定位输入框并输入值_idfrom 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()
一、元素定位1、id定位find_element_by_id(value)
2、class定位find_element_by_class_name(value)
3、name定位find_element_by_name(value)
4、tag定位find_element_by_tag_name(value)
5、XPath定位find_element_by_xpath(value)
绝对路径、相对路径绝对路径:从页面的最初开始定位,以一个单斜杠“/”开头;
相对路径:从页面中可以确定唯一的一个节点开始,已双斜杠“//”开头;
6、link定位find_element_by_link_text(value)
7、Partial link定位通过文字链接中的部分文字定位元素。find_element_by_partial_link_text(value)
8、CSS选择器定位find_element_by_css_selector(value)
CSS常见定位选择器选择器含义实例实例说明*通配符*选择所有的元素#idid选择#login选择id=‘login’的元素.classclass选择div.active选择div中含有class='active’的元素,相当于div[class=‘active’]Element标签选择input选择input元素element1 ,element2匹配element1,element2input,t选择input,t标签的元素element1 >element2div.active*选择div中子元素含有class='active’的元素element1 +element2匹配与element1 同级并且在其相邻后面的element2元素.active+li选择class='active’的同级且紧邻其后的li标签元素[attribute=value]匹配属性attribute的值value元素input[type=“button”]选择input标签中含有type="button"的元素:first-child选择第一个子元素ul:first-child选择ul中第一个子元素element:not(s)匹配element元素但元素中没有s值div:not(.active)选择所有的div中没有class='active’的元素9、By定位使用By定位方式需要导入By类:from selenium.webdriver.common.by import By
By定位方法及示例定位方式定位单个元素示例id定位find_element(By.ID,“id”)find_element(By.ID,“search”)class定位find_element(By.CLASS_NAME,“class”)find_element(By.CLASS_NAME,“btn-search”)name定位find_element(By.NAME,“name”)find_element(By.NAME,“language”)tag定位find_element(By.TAG_NAME,“tag”)find_element(By.TAG_NAME,“h4”)xPath定位find_element(By.XPATH,“xPath”)find_element(By.XPATH,"/html/body/div/p")link定位find_element(By.LINK_TEXT,“text”)find_element(By.LINK_TEXT,“Tynam”)Partial link定位find_element(By.PARTIAL_LINK_TEXT,“PartialText”)find_element(By.PARTIAL_LINK_TEXT,“link定位”)CSS选择器find_element(By.CSS_SELECTOR,“css”)find_element(By.CSS_SELECTOR,“button.css”)二、浏览器操作1、浏览器最大化driver.maximize_window()
2、设置浏览器的宽和高driver.set_window_size(500,900)
3、访问网页driver.get(url)
4、浏览器后退driver.back()
5、浏览器前进driver.forward()
6、刷新页面driver.refresh()
7、关闭浏览器当前窗口driver.close()
#如果有多个窗口时,关闭当前聚焦的窗口
8、结束进程driver.quit()
9、获取页面titledriver.title
10、获取当前页面的URLdriver.current_url
11、获取页面源码page_source
12、切换浏览器窗口driver.current_window_handle
#获得当前窗口句柄
driver.window_handles
#返回所有窗口的句柄到当前会话
13、滚动条操作移动到页面顶部:execute_script("window.scrollTo(document.body.scrollHeight,0)")
移动到页面底部:execute_script("window.scrollTo(0,document.body.scrollHeight)")
移动到使元素顶部与窗口的顶部对齐位置:execute_script("arguments[0].scrollIntoView();",element)
移动到使元素底部与窗口的底部对齐位置:execute_script("arguments[0].scrollIntoView(false);",element)
三、对象操作1、单击对象self.click('xpath', "//*[@id='login']/div/div/form/div[5]/button/span")
2、输入内容driver.find_element_by_id(value).send_keys("AAA")
3、清空内容driver.find_element_by_name(value).clear()
4、提交表单driver.find_element_by_name(value).submit()
5、获取文本内容driver.find_element_by_id(value).text
6、获取对象属性值driver.find_element_by_id(value).get_attribute('name')
7、对象显示状态driver.find_element_by_id(value).is_displayed()
8、对象编辑状态driver.find_element_by_id(value).is_enabled()
9、对象选择状态driver.find_element_by_id(value).is_selected()
新建实例driver = webdriver.Chrome()1.通过标签属性Id查找元素方法:find_element_by_id(element_id)实例:driver.find_element_by_id(“Username”)2.通过标签属性name查找元素方法:find_element_by_name(element_name)实例:driver.find_element_by_name(“name”)3.通过标签Xpath路径查找元素方法:find_element_by_xpath(xpath)实例:driver.find_element_by_xpath(“//div[@id=’Container’]/div/div/ul/li[4]”)括号内为xpath路径,li[4]是指ul标签里边的第四个标签,xpath比较简单,用法不详细介绍4.通过标签名tagname查找元素方法:find_element_by_tag_name(tag_name)实例:driver.find_element_by_tag_name(“input”)注意:通过tag_name查找时使用find_element_by_tag_name查找到的是第一个标签的tag_name5.通过标签中的元素文本链接查找元素< a href = “http://www.google.com/search?q=cheese” > cheese < / a >方法:cheese = driver.find_element_by_link_text(“cheese”)方法:driver.find_element(By.LINK_TEXT, “cheese”)通过查找部分链接文件匹配元素的两种方法search for cheese方法:driver.find_element_by_partial_link_text(“cheese”)方法:driver.find_element(By.PARTIAL_LINK_TEXT, “cheese”)
6.通过标签的class属性查找元素方法:find_elements_by_class_name(class_name)实例:driver.find_elements_by_class_name(“x-panel-body”)7.通过css样式查找元素方法:find_element_by_css_selector()实例:driver.find_element_by_css_selector(“abcclass”)css_selector括号内使用方法很多,不列举了,可通过多种属性获得,如:id,class,等等温馨提示:find_elements_by_css_selector()查询到的是一个集合,如果id名字重复的时候可以采取find_elements_by_id(),其他的查询方式同理;8.浏览器中加载url方法:get(url)实例:driver.get(“http//:www.xxxx.com”)9.向前方法:forward()实例:driver.forward()10.返回当前会话中的cookies方法:get_cookies()实例:driver.get_cookies()11.根据cookie name 查找方法:driver.get_cookie(cookie_name)实例:driver.get_cookie(“NET_SessionId”)12.截取当前页面方法:get_screenshot_as_file(filename)实例:driver.get_screenshot_as_file(“D:\Program Files\Python37\yang.png”)13.获取当前窗口的坐标方法:get_window_position()实例:driver.get_window_position()14.获取当前窗口的长和宽方法:get_window_size()实例:driver.get_window_size()
15.获取当前页面的Url函数方法:current_url实例:driver.current_url16.获取元素坐标方法:location解释:首先查找到你要获取元素的,然后调用location方法实例:driver.find_element_by_xpath(“//*[@id=’tablechart’]/tbody/tr[14]/td[9]”).location17.表单的提交方法:submit解释:查找到表单(from)直接调用submit即可实例:driver.find_element_by_id(“form1”).submit()18.获取CSS的属性值方法:value_of_css_property(css_name)实例:driver.find_element_by_css_selector(“input.btn”).value_of_css_property(“input.btn”)19.获取元素的属性值方法:get_attribute(element_name)实例:driver.find_element_by_id(“sellaiyuan”).get_attribute(“sellaiyuan”)20.判断元素是否被选中方法:is_selected()实例:driver.find_element_by_id(“form1”).is_selected()21.返回元素的大小方法:size实例:driver.find_element_by_id(“iptPassword”).size返回值:{‘width’: 250, ‘height’: 30}22.判断元素是否显示方法:is_displayed()实例:driver.find_element_by_id(“iptPassword”).is_displayed()23.判断元素是否被使用方法:is_enabled()实例:driver.find_element_by_id(“iptPassword”).is_enabled()24.获取元素的文本值方法:text实例:driver.find_element_by_id(“iptUsername”).text25.元素赋值方法:send_keys(*values)实例:driver.find_element_by_id(“iptUsername”).send_keys(‘admin’)注意如果是函数需要增加转义符u,eg.driver.find_element_by_id(“iptUsername”).send_keys(u’青春’)26.返回元素的tagName方法:tag_name实例:driver.find_element_by_id(“iptUsername”).tag_name27.删除浏览器所以的cookies方法:delete_all_cookies()实例:driver.delete_all_cookies()28.删除指定的cookie方法:delete_cookie(name)实例:deriver.delete_cookie(“my_cookie_name”)29.关闭浏览器方法:close()实例:driver.close()30.关闭浏览器并且推出驱动程序方法:quit()实例:driver.quit()31.返回上一页方法:back()实例:driver.back()32.设置等待超时方法:implicitly_wait(wait_time)实例:driver.implicitly_wait(30)33.浏览器窗口最大化方法:maximize_window()实例:driver.maximize_window()34.查看浏览器的名字方法:name实例:drvier.name本文大部分来自前人的整理,

我要回帖

更多关于 &lt;img&gt;标记中规定图像url的属性是 的文章

 

随机推荐