定位方式 | XPath | CSS |
---|---|---|
元素名 | //span(绝对路径),/span(相对路径) | span |
id | //span[@id=‘user’] | #user |
class | //span[@class=‘user’] | .user |
层级关系 | //span//p, //span/p | span p, span>p(>要求是span后紧跟着的p) |
driver.maximize_window()#最大化浏览器
driver.set_window_size(100,200)#设置浏览器页面大小
driver.set_window_position(200,100)#设置浏览器位置
driver.back()#回退操作(必须是在新页面回退到老页面情况使用)
driver.forward()#前进操作
fresh()#刷新操作
driver.close()#关闭当前页面
driver.title #获取页面标题
driver.current_url#获取当前页面url
driver.current_window_handle#获取当前页面的句柄(当前页面的标志)
driver=driver.find_element(By.CSS_SELECTOR,'#id')
#获取文本内容
driver.size#获取元素大小
_attribute('id')#获取元素属性值
driver.is_displayed()#判断元素是否在页面可展示
driver.is_enabled()#判断元素是否可用
driver.is_selected()#判断元素是否被选择
#is_selected(),在需要勾选多选框时,用其判断并选中已经勾选过的默认勾选元素进行点击click()操作,
#然后再选中自己想要选择的元素进行click()
from selenium.webdrivermon.action_chains import ActionChainsact=ActionChains(webdriver.Chrome())
t_click()#鼠标右击
act.double_click()#鼠标双击source=driver.find_element('id1')
target=driver.find_element('id2')act.drag_and_drop(source=source,target=target)#拖拽id1->id2
act.drag_and_drop_by_offset(source=source,xoffset=100,yoffset=200)#鼠标将id1移动到(100,200)
ve_to_element('id2')#鼠标移动到id2
ve_by_offset(100,200)#鼠标移动到(100,200)act.perform()#执行上述操作(上述操作相当于把事件加入一个队列,需要手动触发执行)
from selenium.webdriver import Keysid1=driver.find_element('id1')
id1.send_keys(Keys.BACK_SPACE)#删除
id1.send_keys(Keys.SPACE)#空格
id1.send_keys(Keys.TAB)#table
id1.send_keys(Keys.ESCAPE)#esc
id1.send_keys(Keys.ENTER)#enter
id1.send_keys(Keys.CONTROL,'c')#ctrl+c
id1.send_keys(Keys.CONTROL,'v')#ctrl+v#自己看源码
class Keys:"""Set of special keys codes."""NULL = "ue000"CANCEL = "ue001" # ^breakHELP = "ue002"BACKSPACE = "ue003"BACK_SPACE = BACKSPACETAB = "ue004"CLEAR = "ue005"RETURN = "ue006"ENTER = "ue007"SHIFT = "ue008"LEFT_SHIFT = SHIFTCONTROL = "ue009"LEFT_CONTROL = CONTROLALT = "ue00a"LEFT_ALT = ALTPAUSE = "ue00b"ESCAPE = "ue00c"SPACE = "ue00d"PAGE_UP = "ue00e"PAGE_DOWN = "ue00f"END = "ue010"HOME = "ue011"LEFT = "ue012"ARROW_LEFT = LEFTUP = "ue013"ARROW_UP = UPRIGHT = "ue014"ARROW_RIGHT = RIGHTDOWN = "ue015"ARROW_DOWN = DOWNINSERT = "ue016"DELETE = "ue017"SEMICOLON = "ue018"EQUALS = "ue019"NUMPAD0 = "ue01a" # number pad keysNUMPAD1 = "ue01b"NUMPAD2 = "ue01c"NUMPAD3 = "ue01d"NUMPAD4 = "ue01e"NUMPAD5 = "ue01f"NUMPAD6 = "ue020"NUMPAD7 = "ue021"NUMPAD8 = "ue022"NUMPAD9 = "ue023"MULTIPLY = "ue024"ADD = "ue025"SEPARATOR = "ue026"SUBTRACT = "ue027"DECIMAL = "ue028"DIVIDE = "ue029"F1 = "ue031" # function keysF2 = "ue032"F3 = "ue033"F4 = "ue034"F5 = "ue035"F6 = "ue036"F7 = "ue037"F8 = "ue038"F9 = "ue039"F10 = "ue03a"F11 = "ue03b"F12 = "ue03c"META = "ue03d"COMMAND = "ue03d"ZENKAKU_HANKAKU = "ue040"
from selenium.webdriver.support.select import Selects=Select(driver.find_element(By.CSS_SELECTOR,'#id1'))
s.select_by_value('value值')#通过value值去定位
s.select_by_index(1)#通过下标去索引从1开始
s.deselect_all()#反选所有
s.select_by_visible_text("选择框内容")
1、弹出框分类:alert(警告框),confirm(确认框),prompt(提示框)
2、三种弹框处理方式一致
3、如果页面触发了弹框按钮,必须优先处理弹框,否则后续操作无效
alert=driver.switch_to.alert
#获取弹框内容
alert.accept()#点击确认
alert.dismiss()#点击取消
1、可以通过执行js代码来进行操作
2、selenium调用执行js的脚本方法
3、执行背景:例如看合同是需要下滑到最底端才能点击确认
js="window.scrollTo(0,10000)"#0是左边距,10000是右边距相当于x和y轴
ute_script(js)#执行js语句
1、常用的frame表单有两种:frame、iframe
2、当前frame中找不到元素就要切换到另外一个frame中
3、如果一个页面有多个frame,记得进入下一个frame时要切回原页面,因为只有原页面才能找到其他frame
4、切换时可以用name、id、webelement进行定位frame
driver.switch_to.frame('id')
driver.switch_to.frame('name')
driver.switch_to.frame(driver.find_element(By.CSS_SELECTOR,'#id1'))driver.switch_to.default_content()#切回主frame
1、selenium默认焦点只会在主菜单上,不切换窗口是无法操作其他窗口元素的
2、每一个能打开新页面的链接都是一个句柄
3、在切换句柄之前务必先保存原句柄,避免切换后切不回来
main_handle=driver.current_window_handle#保存主页面
handles=driver.window_handles#获取所有页面
for handle in handles:driver.switch_to.window(handle)#循环切换所有页面if handle in "你想要进入的页面":#判断当前页面是否是你想要的页面,是则退出循环break
#.......编写当前页面你需要的操作driver.switch_to.window(main_handle)#切换回主界面
1、在执行用例时,由于自动化操作很快,一旦发现错误我们无法用肉眼观察结果,所以需要用截图来保存结果
2、因为可能存在一次执行多条用例的情况,所以保存截图命名的方式一般使用时间戳
from time import sleep, time, _screenshot_as_file("图片保存路径")
#时间戳形式保存
_screenshot_as_file("图片保存路径/%s.png"%(strftime("%Y_%m_%d %H_%M_%S")))
1、当我们需要登录但是不知道登录密码或者需要验证码时可以用到
2、当我们真实进行一次登录操作相关的登录数据就会被记录到浏览器cookies中,注意cookies是服务器创建而不是浏览器,这也就是为什么在你登录后关闭页面,再次进去不需要你再登录的原因,浏览器直接获取了cookies的数据帮你登录了
3、那么自动化过程中就可以直接获取cookies值来帮助你进行验证
("url")#连接网页
_cookies()#获取cookie值,可以获取多个,找到那个登录信息,项目中可以找前端小姐姐要
driver.add_cookie({"字典"})#cookie不同的浏览器格式不同,但都是通过字典方式,加入cookie后就相当于登录了
fresh()#执行完成后一定要刷新不然没效果_cookie("name")#这种方式获取指定值时一定要注意这里不能传键,要传值,通过值来获取#看源码def get_cookie(self, name) -> typing.Optional[typing.Dict]:"""Get a single cookie by name. Returns the cookie if found, None ifnot.:Usage:::_cookie('my_cookie')"""with contextlib.suppress(NoSuchCookieException):ute(Command.GET_COOKIE, {"name": name})["value"]return None
本文发布于:2024-02-03 06:16:08,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170691216649186.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |