基于python语言的selenium知识体系
alert 警告框
confirm 确认框
prompt 提示框
步骤一: al = driver.switch_to.alert 切到弹出框,返回弹出框对象
步骤二:最后都必须同意或取消
al.text 获取弹出框文本信息
al.accept() 同意
al.dismiss() 取消
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"))) 截屏,并通过时间戳命名文件
driver.find_element_by_id("id").find_element_by_xpath("//option[@value='xx']").click() 选中某元素
driver.find_element_by_xpath("//*[@id='id']/option[n]").click() 下标n从0开始
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() 返回所有选中的选项
① 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")
driver.switch_to.frame("name 或 id 或 element") 切到iframe表单页面
driver.switch_to.default_content() 切回默认的主页面
driver.current_window_handle 获取当前主窗口句柄,返回值为字符串
driver.window_handles 获取所有由driver启动的所有窗口句柄,返回值为字符串列表
driver.switch_to.window(目标窗口句柄) 切换窗口
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,可用于绕过验证码登录
element.text 获取元素文本
elememt.size 获取元素大小
element.tag_name 获取元素标签名
element.get_attribute(属性名) 获取元素属性
element.is_enabled() 判断元素是否可用
element.is_selected() 判断元素是否被选中
element.is_display() 判断元素是否可见
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) 滚动到顶部
driver.excute_script("arguments[0].scrollIntoView();", elemet)
driver.excute_script("arguments[0].play();", elemet)
sleep(等待时间 s)
driver.implicitly_wait(time_to_wait) 最长等待time_to_wait秒
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)返回值为一个元素
断言方法封装在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
element.click() 点击鼠标左键
element.clear() 清空输入框
element.send_keys("XXXX") 输入XXXX
方法封装在 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() 拖拽
方法封装在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键
NoSuchElementException 没有找到元素
NoSuchFrameException 没有找到frame
NoSuchWindowException 没有找到窗口句柄
NoSuchAttributeException 属性错误
NoAlertPresentException 没有找到alert弹出框
IementNotVisibleException 元素不可见
ElementNotSelectableException 元素没有被选中
TimeoutException 查找元素超时