web UI自动化
-
绝对定位 : 以/开头 非常依赖于页面的顺序和位置
-
相对定位: 以//开头 不依赖页面的循序和位置。只看整个页面中有没有符合表达式的元素
xpath定位 语法 相对定位 //标签名称[@属性名称=值] 逻辑运算 逻辑运算 and or //标签名称[@属性名称=值 and @属性名称=值] 层级定位 text() =“文本定位”, contains(@属性名称/text(),“文本内容”) 包含 轴定位 /轴名称::节点名称
轴定位
- following:😗 表示当前节点后的所有节点
- preceding:😗 表示当前节点前的所有节点
- following-sibling:😗 表示当前节点后的所有同级节点
- preceding-sibling:😗 表示当前节点前的所有同级节点
- child:😗 表示当前节点的所有子节点
- parent:😗 表示当前节点的所有父节点
- ancestor:😗 表示当前节点的祖父节点
- self:😗 表示当前节点的自身元素
- descendant-or-self:😗 表示当前节点及他们的后代元素
- ancestor-or-self:😗 表示当前节点及它的祖先节点
等待方式
-
强制等待sleep(秒)
-
隐性等待(会话级别): 设置最长等待时间,在这个时间内加载完成,则执行下一步。整个driver的会话周期内,设置一次即可,全局可用(一个会话周期指浏览器从打开关闭)。
-
显性等待
-
WebDriver类:显性等待类。
WebDriverWait(driver,等待时长,轮询周期).until()/until_not()
-
expected_conditions模块:提供一系列期望的条件。
presence_of_element_located:元素存在
切换iframe
- driver.switch_to.frame(下标 or name or webelement)
- frame_to_be_available_and_switch_to_it
窗口切换
driver.switch_to.windows()
弹窗处理
WebDriverWait(self.driver, 10).until(EC.alert_is_present()) # 等待弹窗出现
鼠标操作
由selenium的ActionChains类来完成模拟鼠标操作
from selenium.webdriver.common.action_chains import ActionChains
下拉框操作
- 导入
from selenium.webdriver.support.ui import Select
- 找到select元素
driver = find_element_by_xpath("元素表达式")
- 实例化Select类
s=Select(select元素)
- 选择下拉列表值
s.select_by_index(下标,从0开始算,第一个默认为0)
键盘操作
- 导入
from selenium.webdriver.common.keys import Keys
js操作
- 移动到元素element对象的“底端”与当前窗口“底部”对齐:
driver.execute_script("arguments[0].scrolllntoView(false);", element)
- 移动元素element对象“顶端”与当前窗口的“顶部”对齐:
driver.execute_script("argnuments[0].scrolllntoView();", element)
- 移动到页面底部
driver.execute_script("window.scrolllTo(0,document.body.scrllHe)")