selnium中常见的控件: (1)定位文本框,密码框 url:http://cms.duoceshi.cn/cms/manage/login.do 案例: from selenium import webdriver #导入selenium在导入webdriver from time import * d=webdriver.Chrome() #创建一个d队形来打开浏览器,对浏览器操作 d.get(“http://cms.duoceshi.cn/cms”)#打开网页 sleep(2) d.find_element_by_id(“userAccount”).send_keys(“admin”) sleep(3) d.find_element_by_id(“loginPwd”).send_keys(‘123456’) sleep(10) d.close()
2、定位普通按钮,链接,隐藏框 (1)按钮: from selenium import webdriver #导入selenium在导入webdriver from time import * d=webdriver.Chrome() #创建一个d队形来打开浏览器,对浏览器操作 d.get(“http://cms.duoceshi.cn/cms”)#打开网页 sleep(2) d.find_element_by_id(“userAccount”).send_keys(“admin”) sleep(3) d.find_element_by_id(“loginPwd”).send_keys(‘123456’) sleep(2) d.find_element_by_id(“loginBtn”).click() 按钮 sleep(10) d.close() (2)链接 url =" https://www.baidu.com/" 案例: from selenium import webdriver #导入selenium在导入webdriver from time import * d=webdriver.Chrome() #创建一个d队形来打开浏览器,对浏览器操作 d.get(“https://www.baidu.com/”)#打开网页 d.find_element_by_link_text(“新闻”).click() sleep(10) d.close() 3、隐藏框 方法一:ctrl+shift+c键 案例: from selenium import webdriver #导入selenium在导入webdriver from time import * d=webdriver.Chrome() #创建一个d队形来打开浏览器,对浏览器操作 d.get(“https://www.baidu.com/”)#打开网页 d.find_element_by_id(“s-usersetting-top”).click() sleep(2) d.find_element_by_link_text(“高级搜索”).click() sleep(10) d.close()
方法二:move_to_element 移动元 素 案例 from selenium import webdriver #导入selenium在导入webdriver from time import * from selenium.webdriver.common.action_chains import ActionChains d=webdriver.Chrome() #创建一个d队形来打开浏览器,对浏览器操作 d.get(“https://www.baidu.com/”)#打开网页 w=d.find_element_by_id(“s-usersetting-top”) ActionChains(d).move_to_element(w).perform() sleep(2) d.find_element_by_link_text(“高级搜索”).click() sleep(10) d.close()
练习:定位更多 from selenium import webdriver #导入selenium在导入webdriver from time import * from selenium.webdriver.common.action_chains import ActionChains d=webdriver.Chrome() #创建一个d队形来打开浏览器,对浏览器操作 d.get(“https://www.baidu.com/”)#打开网页 w=d.find_element_by_link_text(“更多”) ActionChains(d).move_to_element(w).perform() sleep(2) d.find_element_by_link_text(“网盘”).click() sleep(10) d.close() 拓展知识: ActionChains类(鼠标操作) 常用于模拟鼠标的行为,比如单击、双击、拖拽等行为 click(on_element=None) — 鼠标单击 double_click(on_element=None) — 双击 context_click(on_element=None) — 右击 click_and_hold(on_element=None) — 鼠标单击并且按住不放 drag_and_drop(source,target) — 拖拽 drag_and_drop_by_offset(source,xoffset,yoffset) — 将目标拖动到指定的位置 key_down(value,element=None) — 按下某个键盘上的键 key_up(value,element=None) — 松开某个键 move_by_offset(xoffset,yoffset) — 鼠标从当前位置移动到某个坐标 move_to_element(to_element) — 鼠标移动到某个元素 move_to_element_with_offset(to_element,xoffset,yoffset) — 移动到距某个元素(左上角坐标)多少距离的位置 perform() — 执行链中的所有动作 release(on_element=None) — 在某个元素位置松开鼠标左
3、获取元素的文本 text (断言的方式) 案例: from selenium import webdriver #导入selenium在导入webdriver from time import * from selenium.webdriver.common.action_chains import ActionChains d=webdriver.Chrome() #创建一个d队形来打开浏览器,对浏览器操作 d.get(“https://www.baidu.com/”)#打开网页 dl=d.find_element_by_id(“s-top-loginbtn”).text if dl==“登录” : print(“进入官网”) else: print(“无法打开”) sleep(10) d.close()
4、assert 断言 , 打印日志:assert正确正确执行,错误直接抛异常,打印日志 案例1: a=10 assert a>5 print(“断言成功”) assert a>20 print(‘断言失败’) 直接报错
5、获取窗口title 案例1:title获取 from selenium.webdriver.common.action_chains import ActionChains d=webdriver.Chrome() #创建一个d队形来打开浏览器,对浏览器操作 d.get(“https://www.baidu.com/”)#打开网页 d.title() sleep(10) d.close() 案例2:断言title from selenium import webdriver #导入selenium在导入webdriver from time import * from selenium.webdriver.common.action_chains import ActionChains d=webdriver.Chrome() #创建一个d队形来打开浏览器,对浏览器操作 d.get(“https://www.baidu.com/”)#打开网页 s=d.title print(s) assert (s==“百度一下”) sleep(10) d.close() 6、获取窗口大小 格式: 对象.get_window_size()
from selenium import webdriver #导入selenium在导入webdriver from time import * from selenium.webdriver.common.action_chains import ActionChains d=webdriver.Chrome() #创建一个d队形来打开浏览器,对浏览器操作 d.get(“https://www.baidu.com/”)#打开网页 s=d.get_window_size() print(s) sleep(10) d.close()
7、切换窗口 场景一: 两个连接在一个窗口同时一个浏览器中,覆盖 from selenium import webdriver #导入selenium在导入webdriver from time import * from selenium.webdriver.common.action_chains import ActionChains d=webdriver.Chrome() #创建一个对象来打开浏览器,对浏览器操作 d.get(“https://www.baidu.com/”)#打开网页 sleep(2) d.get(‘https://www.jd.com/’) print(d.title) d.find_element_by_link_text(“我的订单”).click()
场景二: 两个不同窗口在一个浏览器中,通过切换句柄切换窗口 (1)from time import * from selenium.webdriver.common.action_chains import ActionChains d=webdriver.Chrome() #创建一个d队形来打开浏览器,对浏览器操作 d.get(“https://www.baidu.com/”)#打开网页 sleep(2) t=“window.open(‘https://www.jd.com/’)” d.execute_script(t) print(d.title) (2) 切换窗口 格式:d.window_handles 获取所有句柄 switch_to.window(syjb[1]) 切换句柄 场景: from selenium import webdriver #导入selenium在导入webdriver from time import * from selenium.webdriver.common.action_chains import ActionChains d=webdriver.Chrome() #创建一个d队形来打开浏览器,对浏览器操作 d.get(“https://www.baidu.com/”)#打开网页 sleep(2) t=“window.open(‘https://www.jd.com/’)” d.execute_script(t) print(d.title) dqjb=d.current_window_handle #获取句柄 print(dqjb) syjb=d.window_handles #获取所有的句柄 print(syjb) d.switch_to.window(syjb[1]) #切换句柄从0开始,1是最后 d.find_element_by_link_text(“我的订单”).click() 句柄是什么? 在windows中,句柄是和对象一一对应的32位无符号整数值。对象可以映射到唯一的句柄,句柄也可以映射到唯一的对象。
场景三:有三个窗口或三个以上 from selenium import webdriver #导入selenium在导入webdriver from time import * from selenium.webdriver.common.action_chains import ActionChains d=webdriver.Chrome() #创建一个d队形来打开浏览器,对浏览器操作 d.get(“https://www.baidu.com/”)#打开网页 sleep(2) t=“window.open(‘https://www.jd.com/’)” d.execute_script(t) sleep(2) san=“window.open(‘http://cms.duoceshi.cn/cms/manage/login.do’)” d.execute_script(san) print(d.title) dqjb=d.current_window_handle #获取句柄 print(dqjb) syjb=d.window_handles #获取所有的句柄 print(syjb) d.switch_to.window(syjb[1]) #切换句柄从0开始,1是最后 #d.find_element_by_link_text(“我的订单”).click() d.find_element_by_id(“userAccount”).send_keys(“admin”)
场景四:通过for 进行判断 from selenium import webdriver #导入selenium在导入webdriver from time import * from selenium.webdriver.common.action_chains import ActionChains d=webdriver.Chrome() #创建一个d队形来打开浏览器,对浏览器操作 d.get(“https://www.baidu.com/”)#打开网页 sleep(2) t=“window.open(‘https://www.jd.com/’)” d.execute_script(t) sleep(2) san=“window.open(‘http://cms.duoceshi.cn/cms/manage/login.do’)” d.execute_script(san) print(d.title) dqjb=d.current_window_handle #获取句柄 print(dqjb) syjb=d.window_handles #获取所有的句柄 print(syjb) for i in syjb: d.switch_to.window(i) if ‘京东’ in d.title: break d.find_element_by_link_text(“我的订单”).click()
8、获取下拉框选项 引入类:Select() 导入 from selenium.webdriver.support.select url:https://hotels.ctrip.com/(携程网) (1)下拉框中通过索引位取值 格式:Select(wz).select_by_index(5) from selenium import webdriver #导入selenium在导入webdriver from time import * from selenium.webdriver.support.ui import Select from selenium.webdriver.common.action_chains import ActionChains d=webdriver.Chrome() #创建一个d队形来打开浏览器,对浏览器操作 d.get(“https://www.ctrip.com/”)#打开网页 sleep(2) wz=d.find_element_by_id(“J_roomCountList”) Select(wz).select_by_index(5) #通过索引来定位下拉值,从0开始 (2)下拉框中通过文本值 格式:Select(wz).select_by_visible_text(“4间”) from selenium import webdriver #导入selenium在导入webdriver from time import * from selenium.webdriver.support.ui import Select from selenium.webdriver.common.action_chains import ActionChains d=webdriver.Chrome() #创建一个d队形来打开浏览器,对浏览器操作 d.get(“https://www.ctrip.com/”)#打开网页 sleep(2) wz=d.find_element_by_id(“J_roomCountList”) Select(wz).select_by_visible_text(“4间”) #通过索引来定位下拉值,从0开始 (3)下拉框中通过文本值value来取值 from selenium import webdriver #导入selenium在导入webdriver from time import * from selenium.webdriver.support.ui import Select from selenium.webdriver.common.action_chains import ActionChains d=webdriver.Chrome() #创建一个d队形来打开浏览器,对浏览器操作 d.get(“https://www.ctrip.com/”)#打开网页 sleep(2) wz=d.find_element_by_id(“J_roomCountList”) Select(wz).select_by_value(“5”)
9、弹框处理 三种弹框的处理方法:警告型,确认型,输入型弹框
(1)alert 弹框 格式:d.switch_to.alert dismiss()#取消 a.accept() # 确定 场景一: from selenium import webdriver #导入selenium在导入webdriver from time import * from selenium.webdriver.common.action_chains import ActionChains d=webdriver.Chrome() #创建一个d队形来打开浏览器,对浏览器操作 d.get(“file:///E:/dcs/two/selenium%EF%BC%888%EF%BC%89/html%E5%BC%B9%E6%A1%86/alert%E5%BC%B9%E6%A1%86.html”)#打开网页 a=d.switch_to.alert a.dismiss()#取消 sleep(3) a.accept() # 确定 (2)确认型弹框 from selenium import webdriver #导入selenium在导入webdriver from time import * from selenium.webdriver.common.action_chains import ActionChains d=webdriver.Chrome() #创建一个d队形来打开浏览器,对浏览器操作 d.get(“file:///E:/dcs/two/selenium%EF%BC%888%EF%BC%89/html%E5%BC%B9%E6%A1%86/enter.html”)#打开网页 sleep(3) d.find_element_by_class_name(“alert”).click() sleep(2) a=d.switch_to.alert a.dismiss()#取消 (3)输入型弹框 from selenium import webdriver #导入selenium在导入webdriver from time import * from selenium.webdriver.common.action_chains import ActionChains d=webdriver.Chrome() #创建一个d队形来打开浏览器,对浏览器操作 d.get(“file:///E:/dcs/two/selenium%EF%BC%888%EF%BC%89/html%E5%BC%B9%E6%A1%86/prompt.html”)#打开网页 sleep(3) d.find_element_by_class_name(“alert”).click() sleep(2) a=d.switch_to.alert a.send_keys(“www.baidu.com”) sleep(4) a.accept() # 确定 a.dismiss()#取消 (4)上传文件类型弹框 from time import * from selenium.webdriver.common.action_chains import ActionChains d=webdriver.Chrome() #创建一个d队形来打开浏览器,对浏览器操作 d.get(“file:///E:/dcs/two/selenium%EF%BC%888%EF%BC%89/html%E5%BC%B9%E6%A1%86/upload_file.html”)#打开网页 sleep(3) a=d.find_element_by_id(“file”) sleep(2) a.send_keys(r"D:\f\hz10.txt")
10、iframe框 iframe框处理 定位的元素在iframe标签里面,需要先进入iframe,再进行元素定位 进入iframe框方法:switch_to.frame() 退出iframe框方法:switch_to.default_content() 案例: url= https://graph.qq.com/oauth2.0/show?which=Login&display=pc&response_type=code&state=7F9CEF46AAA5968CE54E46D88E5EA04C6A21E71A69975E8ADFEAF590557384F3A8C34742016C3AA2D70C0377E0F95BA7&client_id=100273020&redirect_uri=https%3A%2F%2Fqq.jd.com%2Fnew%2Fqq%2Fcallback.action%3Fview%3Dnull%26uuid%3D5cec005949104b8caeec3ee1848600b7
(1)frame 根据具体的位置定位 d.switch_to.frame(wf) from selenium import webdriver #导入selenium在导入webdriver from time import * from selenium.webdriver.common.action_chains import ActionChains d=webdriver.Chrome() #创建一个d队形来打开浏览器,对浏览器操作 d.get(“https://graph.qq.com/oauth2.0/show?which=Login&display=pc&response_type=code&state=7F9CEF46AAA5968CE54E46D88E5EA04C6A21E71A69975E8ADFEAF590557384F3A8C34742016C3AA2D70C0377E0F95BA7&client_id=100273020&redirect_uri=https%3A%2F%2Fqq.jd.com%2Fnew%2Fqq%2Fcallback.action%3Fview%3Dnull%26uuid%3D5cec005949104b8caeec3ee1848600b7”)#打开网页 sleep(2) wf=d.find_element_by_id(“ptlogin_iframe”) d.switch_to.frame(wf) sleep(2) d.find_element_by_id(“switcher_plogin”).click() (1)frame 根据具体的索引位(索引位从0开始) from selenium import webdriver #导入selenium在导入webdriver from time import * from selenium.webdriver.common.action_chains import ActionChains d=webdriver.Chrome() #创建一个d队形来打开浏览器,对浏览器操作 d.get(“https://graph.qq.com/oauth2.0/show?which=Login&display=pc&response_type=code&state=7F9CEF46AAA5968CE54E46D88E5EA04C6A21E71A69975E8ADFEAF590557384F3A8C34742016C3AA2D70C0377E0F95BA7&client_id=100273020&redirect_uri=https%3A%2F%2Fqq.jd.com%2Fnew%2Fqq%2Fcallback.action%3Fview%3Dnull%26uuid%3D5cec005949104b8caeec3ee1848600b7”)#打开网页 sleep(2) d.switch_to.frame(0) sleep(2) d.find_element_by_id(“switcher_plogin”).click() (3)通过tag_name 来定位
|