基于python语言的selenium知识体系文章目录
1 弹出框
1.1 类型
alert 警告框 confirm 确认框 prompt 提示框
1.2 处理步骤 以alert为例,其他雷同
步骤一: al = driver.switch_to.alert 切到弹出框,返回弹出框对象 步骤二:最后都必须同意或取消 al.text 获取弹出框文本信息 al.accept() 同意 al.dismiss() 取消
2 浏览器常用操作
driver.maximize_window() 最大化浏览器 driver.set_window_size(w,h) 设置浏览器大小,单位为像素 driver.set_window_position(x,y) 设置浏览器位置 driver.back() 后退 driver.forward() 前进 driver.refresh() 刷新 driver.close() 关闭当前主窗口(默认启动的界面为主窗口) driver.quit() 关闭由driver对象启动的所有窗口 driver.title 获取当前页面的title信息 driver.current_rul 获取当前页面的url信息 driver.get_screenshot_as_file("文件路径/{}.png".formate(time.strftime("%Y_%m_%d %H_%M_%S"))) 截屏,并通过时间戳命名文件
3 select下拉框
3.1 分两步定位并选中
driver.find_element_by_id("id").find_element_by_xpath("//option[@value='xx']").click() 选中某元素
3.2 直接定位并选中
driver.find_element_by_xpath("//*[@id='id']/option[n]").click() 下标n从0开始
3.3 通过Select模块定位及操做
Select(下拉框元素).select_by_index(n).click() 通过下标定位,n从0开始,并选中 Select(下拉框元素).select_by_value("xx").click() 通过value属性值定位,并选中 Select(下拉框元素).select_by_visible_text("xx").click() 通过显示的文本定位,并选中 Select(下拉框元素).deselect_all() 取消所有选中的项 Select(下拉框元素).deselect_by_index(n) 取消选中的对应index的选项 Select(下拉框元素).deselect_by_value("xx") 取消选中的对应value的选项 Select(下拉框元素).deselect_by_visible_text("xx") 取消选中的对应文本的选项 Select(下拉框元素).first_selected_option() 返回第一个选中的选项 Select(下拉框元素).all_selected_option() 返回所有选中的选项
4 元素定位的8种方式
① driver.find_element_by_css_selector("css_selector") - driver.find_element_by_css_selector("#id") id选择器 - driver.find_element_by_css_selector(".class_name") class选择器 - driver.find_element_by_css_selector("tag_name") 元素选择器 - driver.find_element_by_css_selector("[属性=‘属性值’]") 属性选择器 - driver.find_element_by_css_selector("标签1>标签2") - driver.find_element_by_css_selector("标签1 标签2") 层级选择器 ② driver.find_element_by_XPath("XPath") - driver.find_element_by_Xpath("/htmlXpath/body/form/div/fieldset/p[2]/input") 绝对路径: 标签相同时,用【n】表示第n个标签 - driver.find_element_by_Xpath("//input ") 相对路径 - driver.find_element_by_Xpath("//input[@id=‘passwordA’] ") 路径结合属性:在XPath中,所有的属性必须使用@符号修饰 - driver.find_element_by_Xpath("//标签名[@属性1=‘属性值’ and @属性2=‘属性值’]") 路径结合多个属性 - driver.find_element_by_Xpath("//父级标签名[@父级属性="属性值"]/子级标签名") 路径结合层级 - XPath-延申: //*[text()="XXX"] 文本内容为XXX的元素 //*[contains(@attribute,"XXX")] 属性中含有XXX的元素 //*[starts-with(@attribute,"XXX")] 属性以XXX开头的元素 ③ driver.find_element_by_id("id") ④ driver.find_element_by_name("name") ⑤ driver.find_element_by_class_name("class_name") ⑥ driver.find_element_by_link_text("link_text") ⑦ driver.find_element_by_partial_link_text("partial_link_text") ⑧ driver.find_element_by_tag_name("tag_name")
5 frame表单、窗口切换
5.1 frame表单
driver.switch_to.frame("name 或 id 或 element") 切到iframe表单页面 driver.switch_to.default_content() 切回默认的主页面
5.2 多窗口切换
driver.current_window_handle 获取当前主窗口句柄,返回值为字符串 driver.window_handles 获取所有由driver启动的所有窗口句柄,返回值为字符串列表 driver.switch_to.window(目标窗口句柄) 切换窗口
6 cookie处理
driver.get_cookies() 获取所有的cookie driver.get_cookie(name) 获取指定name的cookie driver.delete_all_cookies() 清除所有cookie driver.delete_cookie(name) 清除指定name的cookie driver.add_cookie(cookie_dict) 添加cookie,可用于绕过验证码登录
7 获取元素信息
element.text 获取元素文本 elememt.size 获取元素大小 element.tag_name 获取元素标签名 element.get_attribute(属性名) 获取元素属性 element.is_enabled() 判断元素是否可用 element.is_selected() 判断元素是否被选中 element.is_display() 判断元素是否可见
8 JS处理
8.1 滚动条
js = "window.scrollTo(x,y)";driver.execute_script(js) x:左边距 y:右边距 单位为像素 js = "window.scrollTo(0,document.body.scrollHeight)"; driver.execute_script(js) 滚动到底部 js = "window.scrollTo(0,0)"; driver.execute_script(js) 滚动到顶部
8.2 聚焦元素
driver.excute_script("arguments[0].scrollIntoView();", elemet)
8.3 播放视频
driver.excute_script("arguments[0].play();", elemet)
9 元素等待
9.1 强制等待 针对单个元素生效
sleep(等待时间 s)
9.2 隐式等待 针对所有元素生效
driver.implicitly_wait(time_to_wait) 最长等待time_to_wait秒
9.3 显示等待 针对单个元素生效
WebDriverWait(driver,timeout=10,poll_frequency=0.5).until(lambda x:x.find_element_by_css_selector("#user"),"自定义超时提示信息") 1)timeout 超时时间 2)poll_frequency 访问频率,默认0.5s找一次元素 3)返回值为一个元素
10 Python自带的UnitTest框架的原生断言
断言方法封装在unittest.TestCase类中,继承后可调用 self.assertTrue(expr, msg=None) 验证expr是否为True self.assertFalse(expr, msg=None) 验证expr是否为False self.assertEqual(expected, actual,msg=None) 验证expected是否等于actual assertNotEqual(first, second,msg=None) 验证first是否不等于 second self.assertIn(member, container,msg=None) 验证member是否包含于 container self.assertNotIn(member, container,msg=None) 验证member是否不包含于 container assertIsNone(obj, msg=None) 验证obj是否为None assertNotNone(obj, msg=None) 验证obj是否不为None
11 鼠标和键盘操作
11.1 鼠标简单操作
element.click() 点击鼠标左键 element.clear() 清空输入框 element.send_keys("XXXX") 输入XXXX
11.2 鼠标事件
方法封装在 ActionChains 类中 ActionChains(driver).context_click(element).perform() 右击鼠标 ActionChains(driver).double_click(element).perform() 双击鼠标 ActionChains(driver).move_to_element(element).perform() 鼠标悬停 ActionChains(driver).drag_and_drop(source_element, target_element).perform() ActionChains(driver).drag_and_drop_by_offset(element, xoffset=XX, yoffset=YY).perform() 拖拽
11.3 键盘操作
方法封装在Keys类中 element.send_keys(Keys.F1) 按下F1键(F1-F12自行替换) element.send_keys(Keys.TAB) Tab键 element.send_keys(Keys.TAB) Enter键 element.send_keys(Keys.CONTROL, "c") 复制:Ctrl+c键 element.send_keys(Keys.CONTROL, "v") 粘贴:Ctrl+v键 element.send_keys(Keys.CONTROL, "a") 全选:Ctrl+a键 element.send_keys(Keys.CONTROL, "x") 剪切:Ctrl+x键
12 selenium常见异常
NoSuchElementException 没有找到元素 NoSuchFrameException 没有找到frame NoSuchWindowException 没有找到窗口句柄 NoSuchAttributeException 属性错误 NoAlertPresentException 没有找到alert弹出框 IementNotVisibleException 元素不可见 ElementNotSelectableException 元素没有被选中 TimeoutException 查找元素超时
脑图
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算