自动化测试selenium(自动化测试selenium框架)
一.简单介绍:
1.1功能:
编写代码,让程序自动运行;回归测试;系统监控
1.2步骤:
分析测试需求,选择方案,指定测试计划,环境搭建,测试用例,编码,分析结果
1.3自动化测试和手工测试的区别:
步骤更加详细,包括了检验输入框或者按钮的状态
1.4测试用例几个模块:
id,模块,测试点,前提条件,步骤,预期结果,实际结果
1.5优势及工作原理:
开源,多游览器,多平台,api齐全
编写代码创建一个driver,生成一个用于监控的server游览器,浏览器发送特定的HTTP请求,然后解析请求并作出相应的响应。
1.6 IDE以及环境的配置:
Selenium-Java.jar,idea,jdk以及JDK环境配置
1. 创建一个spring boot工程,导入selenium-java.jar包,写一个简单的demo
public class demo {
public static void main(String[] args) {
//声明一个driver
WebDriver driver;
//设置驱动的位置
System.setProperty("webdriver.chrome.driver", "D:\\python\\chromedriver.exe");
driver = new ChromeDriver();
driver.get("http://www.baidu.com");
}
}
HTML定位基础知识:有id的话使用id进行定位,没有的话使用class进行定位
二、详细介绍
2.1元素定位:
2.1.1十大定位方法
driver.findElement(By.id()),by.className(),by.linkText()...
browser.find_element_by_id()
browser.find_element_by_name()
browser.find_element_by_xpath()
browser.find_element_by_tag_name()
browser.find_element_by_link_text()
browser.find_element_by_class_name()
browser.find_element_by_css_selector()
browser.find_element_by_partial_link_text()
2.2输入框:
clear/send/getAttribute
2.3单选框:
click/xpath/clear/isSelect,
xpath(可以选择父节点的所有子孙节点,也可以选择一个子孙节点)所有的时使用//双斜杠
2.4多选框:
click/clear/isSelect/isEnabled
public WebDriver webDriver;
public void InitDriver(){
System.setProperty("webdriver.chrome.driver", "D:\\python\\chromedriver.exe");
webDriver = new ChromeDriver();
webDriver.get("https://passport.baidu.com/v2/?login&tpl=mn&u=http%3A%2F%2Fwww.baidu.com%2F&sms=5");
webDriver.manage().window().maximize();
}
public void inputBox(){
//定位分析
webDriver.findElement(By.id("TANGRAM__PSP_3__footerULoginBtn")).click();
webDriver.findElement(By.id("TANGRAM__PSP_3__userName")).sendKeys("15638858865");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//清除
webDriver.findElement(By.id("TANGRAM__PSP_3__userName")).clear();
//获取属性值
String attribute = webDriver.findElement(By.id("TANGRAM__PSP_3__userName")).getAttribute("placeholder");
System.out.println(attribute);
/*webDriver.findElement(By.id("TANGRAM__PSP_3__password")).sendKeys("123456");
webDriver.findElement(By.id("TANGRAM__PSP_3__submit")).click();*/
}
2.5模拟鼠标移动,键盘按键等没有特定的执行对象的操作
yuanlai = browser.find_element_by_css_selector('#draggable')
mubiao = browser.find_element_by_css_selector('#droppable')
a = ActionChains(browser)
a.drag_and_drop(yuanlai,mubiao)
a.perform()
2.6拖动滑动条
# execute_script()将进度条拉到最下面,然后弹出提示框
browser.execute_script('window.scrollTo(0,document.body.scrollHeight)')
browser.execute_script('alert("已经到最下面了")')
2.7获取节点信息
1. 获取属性 input.getAttribute()
2. 获取文本 input.text
3. 获取ID,位置,标签名和大小
input.id,input.location,input.tag_Name,input.size
2.8切换frame
当我们使用selenium打开页面,默认是在父页面里执行的,但是呢,这种网页我们往往是获取不到子页面的节点,所以要使用switch_to.frame()来跳转页面,然后再进行相对应的操作
然后尝试获取父页面的某个节点,如果获取不到就报错,接下来就换回父页面去获取该节点,就能成功了。
2.9延时等待
1. 隐式等待:
查找某个节点的时候,隐式等待就会等待固定的时间,如果时间到了你还没有来,他就会发脾气然后向上级打小报告说你没有出现
browser = webdriver.Chrome
browser.implicitly_wait(10)
browser.get('https://www.baidu.com')
2. 显式等待
2.10后退前进:
使用浏览器都有后退前进功能,在selenium中,back()表示后退,forward()表示前进。
browser = webdriver.Chrome()
browser .get('https://www.baidu.com')
browser.back()
time.sleep(3)
browser.forward()
browser.close()
2.11获取cookies:
browser = webdriver.Chrome()
browser.get('https://www.baidu.com')
browser.get_cookies()
browser.add_cookie({‘name’:’name’,’domain’:’www.baidu.com’,’value’:’germay’})
browser.get_cookies()
browser.delete_all_cookies()
print(browser.get_cookies())
2.12选项卡管理:
browser = webdriver.Chrome()
browser.get('https://www.baidu.com')
# window.open()新开启一个选项卡
browser.execute_script('window.open()')
# window_handles 用于获取当前开启的所有选项卡,返回的是选项卡的代号列表
print(browser.window_handles)
# switch_to_window用于切换选项卡
browser.switch_to_window(browser.window_handles[1])
browser.get('https://www.taobao.com')
time.sleep(3)
browser.switch_to_window(browser.window_handles[0])
browser.get('https://python.org')
版权声明:
作者: freeclashnode
链接: https://www.freeclashnode.com/news/article-2617.htm
来源: FreeClashNode
文章版权归作者所有,未经允许请勿转载。
上一个:不管新老硬盘装到硬盘盒里如果提示格式化都可以这样解决
下一个:一些彩票中奖的小技巧
热门文章
- 11月15日|20.1M/S,Shadowrocket/Clash/SSR/V2ray免费节点订阅链接每天更新
- 11月21日|20.9M/S,SSR/Shadowrocket/Clash/V2ray免费节点订阅链接每天更新
- 11月29日|18.1M/S,SSR/Clash/Shadowrocket/V2ray免费节点订阅链接每天更新
- 11月28日|19.7M/S,V2ray/SSR/Shadowrocket/Clash免费节点订阅链接每天更新
- 11月27日|19.2M/S,SSR/Shadowrocket/Clash/V2ray免费节点订阅链接每天更新
- 11月24日|22.5M/S,V2ray/Shadowrocket/Clash/SSR免费节点订阅链接每天更新
- 11月23日|22.6M/S,Shadowrocket/V2ray/Clash/SSR免费节点订阅链接每天更新
- 11月22日|21.3M/S,V2ray/Shadowrocket/SSR/Clash免费节点订阅链接每天更新
- 12月3日|21.7M/S,Shadowrocket/Clash/V2ray/SSR免费节点订阅链接每天更新
- 11月30日|18M/S,Clash/V2ray/SSR/Shadowrocket免费节点订阅链接每天更新
最新文章
- 12月13日|22.8M/S,Clash/SSR/Shadowrocket/V2ray免费节点订阅链接每天更新
- 12月12日|19.2M/S,V2ray/SSR/Shadowrocket/Clash免费节点订阅链接每天更新
- 12月11日|18.9M/S,V2ray/SSR/Shadowrocket/Clash免费节点订阅链接每天更新
- 12月10日|21.8M/S,SSR/V2ray/Clash/Shadowrocket免费节点订阅链接每天更新
- 12月9日|20.5M/S,V2ray/Clash/Shadowrocket/SSR免费节点订阅链接每天更新
- 12月8日|21.5M/S,V2ray/Clash/Shadowrocket/SSR免费节点订阅链接每天更新
- 12月7日|18.5M/S,SSR/V2ray/Clash/Shadowrocket免费节点订阅链接每天更新
- 12月6日|19.9M/S,SSR/Shadowrocket/V2ray/Clash免费节点订阅链接每天更新
- 12月5日|18.5M/S,Clash/SSR/Shadowrocket/V2ray免费节点订阅链接每天更新
- 12月4日|21.8M/S,Clash/SSR/Shadowrocket/V2ray免费节点订阅链接每天更新