Selenium主要用于web应用程序自动化测试,Selenium直接运行在浏览器中,就像实际用户在操作浏览器
三大功能:
selenium特点:
安装Python的selenium模块:
pip install selenium
浏览器驱动下载:
导入依赖:
from selenium import webdriver
from selenium.webdriver.common.by import By
创建浏览器对象:
driver = webdriver.Chrome()
get方法打开指定页面:
driver.get('http://www.baidu.com')
关闭
# 关闭浏览器窗口,进程也会存在驱动运行
driver.close()
# 退出浏览器驱动
driver.quit()
ID定位
driver.find_element(By.ID, 'kw').send_keys('selenium')#文本框输入
driver.find_element_by_id('su').click()#点击
NAME定位
driver.find_element(By.NAME,'wd').send_keys('西安天气')
CLASS_NAME定位
driver.find_element(By.CLASS_NAME,'el-icon-arrow-down').click()
TAG_NAME定位
driver.find_element(by=By.TAG_NAME,value='input')
LINK_TEXT定位
driver.find_element(by=By.LINK_TEXT,value='新闻').click()
PARTIAL_LINK_TEXT定位
driver.find_element(by=By.PARTIAL_LINK_TEXT,value='新').click()
XPATH定位
#绝对Xpath
driver.find_element(by=By.XPATH,value='/html/body/div[1]/div[1]/div[5]/div[1]/div/form/span[1]/input').send_keys('SDK')
#相对Xpath
driver.find_element(by=By.XPATH,value='//*[@id="kw" and @name="wd"]').send_keys("sdk")
#利用属性进行定位 @ 选取属性,id为一个属性,=后面是属性的值 属性之间可以进行逻辑运算 and or not
driver.find_element_by_xpath('//*[@name="wd" and @class="s_ipt"]')
#利用文本精确定位
driver.find_element_by_xpath('//*[text()="新闻"]')
#利用文本模糊定位
driver.find_element_by_xpath('//*[contains(@value,"百度")]')
CSS_SELECTOR定位
driver.find_element(by=By.CSS_SELECTOR,value='#kw').send_keys("sdk")
获取属性:
element.get_attribute('href')
element.get_attribute('value')
获取文本:
element.text
窗口最大化:
driver.maximize_window()
窗口最小化:
driver.minimize_window()
获取窗口句柄:
driver.window_handles
切换到指定窗口:
driver.switch_to.window(handles[1])
进入iframe:
driver.switch_to.frame(iframe)
退出iframe:
driver.switch_to.parent_frame()
关闭当前窗口:
driver.close()
退出浏览器:
dirver.quit()
后退/前进/刷新:
driver.back()
driver.forward()
driver.refresh()
配置无框浏览器:
ops = webdriver.ChromeOptions()
ops.add_argument('headless')
driver = webdriver.Chrome(options=ops)
左键单击:
ActionChains(driver).click(element).perform()
右键单击:
ActionChains(driver).context_click(input).perform()
左键双击:
ActionChains(driver).double_click(back).perform()
鼠标悬停:
ActionChains(driver).move_to_element(more).perform()
键盘操作:
#回车
input.send_keys(Keys.ENTER)
#ctrl+a
input.send_keys(Keys.CONTROL, 'a')
#ctrl+c
input.send_keys(Keys.CONTROL, 'c')
#ctrl+v
input.send_keys(Keys.CONTROL, 'v')
断言:
assert 条件 ,"断言失败信息"
下拉框选择:
#索引值选择
Select(select).select_by_index(index)
#value值选择
Select(select).select_by_value(select_value)
#text文本选择
Select(select).select_by_visible_text(text)