UI自动化测试 - selenium基本功

一、八大定位方法

from selenium.webdriver.common.by import By

#id定位
webdriver.find_element(By.ID,value)

#class定位
webdriver.find_element(By.CLASS_NAME,value)

#xpath定位
webdriver.find_element(By.XPATH,value)

#css定位
webdriver.find_element(By.CSS_SELECTOR,value)

#name定位
webdriver.find_element(By.NAME,value)

#元素定位
webdriver.find_element(By.TAG_NAME,value)

#超链接文本定位
webdriver.find_element(By.LINK_TEXT,value)

#模糊文本定位
webdriver.find_element(By.PARTIAL_LINK_TEXT,value)

二、浏览器常用方法

以下以Chrome为例

from selenium import webdriver

browser = webdriver.Chrome() #获取chrome驱动对象

browser.get("https://www.baidu.com") #打开百度

browser.maximize_window() #窗口最大化

browser.set_window_size(weight,height) #设置窗口大小

browser.add_cookie(cookie_dict) #添加cookie

browser.delete_cookie(cookie_name) #删除cookie

browser.delete_all_cookies() #删除所有cookie

browser.back() #浏览器后退

browser.forward() #浏览器前进

browser.refresh() #浏览器刷新

browser.close() #关闭浏览器

browser.name #名称

browser.title #标题

browser.currenct_url #当前url

browser.find_element(way,value) #找到单个元素

browser.find_elements(way,value) #找到多个元素

browser.execute_script(js) #执行js脚本

三、鼠标操作

from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver

browser = webdriver.Chrome()

browser.get("https://www.baidu.com")

action = ActionChains(browser) #实例化鼠标对象

element = browser.find_element(By.ID,"kw")

action.click(element) #单击

element.click() #这也是单击

action.context_click() #右键点击

action.double_click() #双击

action.perform() #执行鼠标操作,记得执行这一步,不然以上的操作没有效果

element2 = browser.find_element(By.ID,"kw2") #此处定位id值为模拟

action.move_to_element(element) #鼠标悬浮element元素

action.click_and_hold(element) #长按element元素

action.drag_and_drop(element,element2) #将element拖动到element2处

action.drag_and_drop_by_offset(element,xoffset,yoffset) #将element拖动到(x,y)坐标

action.release() #释放鼠标

action.perform() 执行鼠标操作

四、键盘操作

from selenium.webdriver.common.keys import Keys
from selenium import webdriver

browser = webdriver.Chrome()

browser.get("https://www.baidu.com")

input_bar = browser.find_element(By.ID,"kw") #输入框

input_bar.send_keys("输入文本")

input_bar.send_keys('file_path') #输入文件路径,上传文件

​control = Keys.CONTROL # Ctrl键

back = Keys.BACK_SPACE # BackSpace键

input_bar.send_keys(back) #删除内容

input_bar.send_keys(control,'a') #相当于按下control+a

五、等待

1、强制等待

time.sleep() 

2、显示等待

显示等待是指在指定时间内一直等待某个元素或者特定条件,若在指定时间内条件达成/元素出现,则结束等待,若超时则直接报错

等待条件:

title_is(title) 判断页面title是否符合预期

title_contains(title) 判断title是否包含某个字符串

presence_of_element_located(locator) 判断某个locator元素是否被加到DOM树里,并不代表该元素一定可见(元素可以是隐藏的)

visibility_of_element_located(locator) 判断某个locator元素是否可见。 可见代表非隐藏、可显示,并且元素的宽和高都大于0

visibility_of(element) 判断element元素是否可见

invisibility_of_element_located(locator) 判断某个locator元素是否隐藏DOM树(隐藏、不存在、可见)

text_to_be_present_in_element(locator,text) 判断某个locator元素的text是否包含了预期的字符串

text_to_be_present_in_element_value(locator,value) 判断某个元素的value属性值是否包含了预期的字符串

frame_to_be_available_and_switch_to_it() 判断该frame是否可以switch进去

element_to_be_clickable(locator) 判断某个locator元素是否可点击

staleness_of(element) 等某个元素从DOM树中移除。传入WebElement对象

element_to_be_selected(element) 等待element元素是被选中,一般用在下拉列表

element_located_to_be_selected(locator) 等待locator元素是被选中

element_selection_state_to_be(element, is_selected) 判断某个元素的选中状态是否符合预期

element_located_selection_state_to_be(locator,is_selected) 判断某个元素的选中状态是否符合预期

alert_is_present 判断页面是否存在alert

presence_of_all_elements_located(locator) 判断是否至少有1个元素存在DOM树中

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium import webdriver

browser = webdriver.Chrome()

waiter = WebDriverWait(browser, timeout=time)  #实例化显示等待对象,并设置超时时间

condition = EC.title_is("百度") #设置条件

wait.until(condition) #显示等待直到条件达成

wait.until_not(condition) #显示等待直到条件不满足

3、隐式等待

隐式等待针对全局元素,可以理解为设定了一个查找元素的超时时间。在指定的时间内,没有找到元素会一直等待,直到超时报错

from selenium import webdriver 

browser = webdriver.Chrome()

browser.implicitly_wait(time) #设置隐式等待时间

六、文本属性

1、元素文本 :element.text

2、元素是否选中 :element.is_selected()

3、元素标签名称 :element.tag_name

4、元素其他属性 :element.get_attribute(‘value’)

七、alert框操作

from selenium import webdriver

browser = webdriver.Chrome()

alert = browser.switch_to.alert() #实例化alert对象
alert.text #alert文本
alert.accept() #同意
alert.dismiss() #拒绝
alert.send_keys() #输入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值