Selenium
来源:互联网 发布:淘宝联盟显示已收货 编辑:程序博客网 时间:2024/06/05 20:33
https://www.imooc.com/video/13952
建java项目 建包 建类
import selenium包
1 java打开FireFox
package com.TEST;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
public class openFirefox {
public static void main(String[] args) {
// 设置浏览器的地址,不设置默认在默认安装地址打开
System.setProperty("webdriver.firefox.bin", "F:\\APP TEST\\Mozilla Firefox\\firefox.exe");
WebDriver driver = new FirefoxDriver();
String testUrl = "http://www.baidu.com";
driver.get(testUrl);
}
}
2 java打开chrome
package com.TEST;
import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;
public class openChrome {
public static void main(String[] args) {
// 设置浏览器的地址,不设置默认在默认安装地址打开
System.setProperty("webdriver.chrome.driver","C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("http://www.zhihu.com");
driver.quit();
// driver.close();
// driver.refresh();
}
}
// https://www.imooc.com/video/13960 元素的定位
By.id By.name By.className By.tagName 链接By.linkText
.click()点击 .sendKeys("输入值") .clear()清除 .getText() 获得文本
最好用 By.xpath()
By.xpath('@href')
By.xpath('text()')
By.xpath('//a[contains(text(),"下一页")]/@href')
By.xpath("//span[@class='col2']/a")
By.xpath('//a[contains(text(),'安徽')]/../a[position()>2]')
By.xpath('//ul[@class="l-contact"]/li/span[contains(text(),"公司官网")]/following-sibling::span/a/@href')
driver.findElement(By.xpath(".//*[@id='kw']")).sendKeys("hello");
driver.findElement(By.xpath("//span[@class='col2']/a")).click();
driver.findElement(By.xpath("//div[@class='sub-nav']/div[@class='sub-navbar']/a[contains(text(),'供求商机')]")).click();
driver.findElement(By.id("kw")).sendKeys("知乎");;
driver.findElement(By.name("wd")).sendKeys(" name");
driver.findElement(By.className("s_ipt")).sendKeys(" class_name");
driver.findElement(By.linkText("图片")).click();
driver.findElement(By.cssSelector("#kw")).sendKeys("keys");
12 23 周五
重点table定位
// 定位到该表格
WebElement Table = driver.findElement(By.tagName("table"));
// 定位到表格某一列所有元素 定位一组元素用 findElements
// 然后变成list 需要再转化为 WebElement
List<WebElement> rows_0 = Table.findElements(By.tagName("tr"));
// 再循环取出每一行
for(WebElement r:rows_0){
// 取出该行所有列数组
List<WebElement> tds = r.findElements(By.tagName("td"));
for(WebElement t:tds){
System.out.print(t.getText()+"\n");
}
}
API
打开网址方式
操作浏览器API
输入框操作API
选择框处理
页面元素处理
窗口处理API
JS操作
特殊API
打开网址方式
Driver.get()
Driver.navigate.to()
操作浏览器API
Driver.navigate().refresh()
Driver.navigate().forward()
Driver.navigate().back()
Driver.getTitle()
Driver.getCurrenUrl() 获取当前URL
Driver.manage().windows().maximize() 窗口最大化
Driver.quite() 没有完全关闭
Driver.close() 完全关闭
滚动条操作 通过JS操作
js.executeScript(document.getElementById("ueditor_0").contentWindow.document.body.innerHTML=\"这个是通过JS写入的在fram里面");
操作浏览器cookie
获取cookie
public void getCookie_all(){
Set<Cookie> allCookie = driver.manage().getCookies();
for(Cookie loadedCookie:allCookie){
System.out.print("作用域:"+loadedCookie.getDomain());
名称:loadedCookie.getName()
值:loadedCookie.getValue()
范围:loadedCookie.getArea()
过期时间:loadedCookie.getExpriy()
}
}
删除Cookie
public void decookie(){
message("删除Cookie");
driver.manage().deleteAllCookies();
}
输入框操作API
sendKeys()
clear()
getText()
click()
选择框处理{
单选框
message("定位单选框api进行中");
WebElement radio = driver.findElement(By.name("Sex"));//定位到该单选框
message("检查元素是否选中api进行中");
Checkbox(radio,"单选框");
复选框
message("定位复选框api进行中");
WebElement box = driver.findElement(By.name("Bike"));//定位到该单选框
message("检查元素是否选中api进行中");
下拉框
Checkbox(box,"复选框")
message("下拉框api进行中");
Select list = new Select(driver.findElement(By.name("listname")));
message("下拉框通过index进行选择api进行中");
message("下拉框通过属性进行选择api进行中");
list.selectByValue("下拉框三");
}
特殊窗口处理{
Iframe窗口处理 弹窗处理
}
页面元素处理{
等待加载 根据属性获取元素值 获取对象的css属性
获取对象状态{
页面是否显示isdisplay()
元素是否存在find_element
元素是否选中isSelected()
是否处于灰化状态isEnabled()
}
}
窗口处理API
JS操作{
js定位 js单击元素
}
特殊API{
报错时截屏保存
模拟鼠标右键操作(用处不大)
鼠标悬浮(用处不大)
上传文件
日期控制处理
浏览器滚动条操作
可通过
建java项目 建包 建类
import selenium包
1 java打开FireFox
package com.TEST;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
public class openFirefox {
public static void main(String[] args) {
// 设置浏览器的地址,不设置默认在默认安装地址打开
System.setProperty("webdriver.firefox.bin", "F:\\APP TEST\\Mozilla Firefox\\firefox.exe");
WebDriver driver = new FirefoxDriver();
String testUrl = "http://www.baidu.com";
driver.get(testUrl);
}
}
2 java打开chrome
package com.TEST;
import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;
public class openChrome {
public static void main(String[] args) {
// 设置浏览器的地址,不设置默认在默认安装地址打开
System.setProperty("webdriver.chrome.driver","C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("http://www.zhihu.com");
driver.quit();
// driver.close();
// driver.refresh();
}
}
// https://www.imooc.com/video/13960 元素的定位
By.id By.name By.className By.tagName 链接By.linkText
.click()点击 .sendKeys("输入值") .clear()清除 .getText() 获得文本
最好用 By.xpath()
By.xpath('@href')
By.xpath('text()')
By.xpath('//a[contains(text(),"下一页")]/@href')
By.xpath("//span[@class='col2']/a")
By.xpath('//a[contains(text(),'安徽')]/../a[position()>2]')
By.xpath('//ul[@class="l-contact"]/li/span[contains(text(),"公司官网")]/following-sibling::span/a/@href')
driver.findElement(By.xpath(".//*[@id='kw']")).sendKeys("hello");
driver.findElement(By.xpath("//span[@class='col2']/a")).click();
driver.findElement(By.xpath("//div[@class='sub-nav']/div[@class='sub-navbar']/a[contains(text(),'供求商机')]")).click();
driver.findElement(By.id("kw")).sendKeys("知乎");;
driver.findElement(By.name("wd")).sendKeys(" name");
driver.findElement(By.className("s_ipt")).sendKeys(" class_name");
driver.findElement(By.linkText("图片")).click();
driver.findElement(By.cssSelector("#kw")).sendKeys("keys");
12 23 周五
重点table定位
// 定位到该表格
WebElement Table = driver.findElement(By.tagName("table"));
// 定位到表格某一列所有元素 定位一组元素用 findElements
// 然后变成list 需要再转化为 WebElement
List<WebElement> rows_0 = Table.findElements(By.tagName("tr"));
// 再循环取出每一行
for(WebElement r:rows_0){
// 取出该行所有列数组
List<WebElement> tds = r.findElements(By.tagName("td"));
for(WebElement t:tds){
System.out.print(t.getText()+"\n");
}
}
API
打开网址方式
操作浏览器API
输入框操作API
选择框处理
页面元素处理
窗口处理API
JS操作
特殊API
打开网址方式
Driver.get()
Driver.navigate.to()
操作浏览器API
Driver.navigate().refresh()
Driver.navigate().forward()
Driver.navigate().back()
Driver.getTitle()
Driver.getCurrenUrl() 获取当前URL
Driver.manage().windows().maximize() 窗口最大化
Driver.quite() 没有完全关闭
Driver.close() 完全关闭
滚动条操作 通过JS操作
js.executeScript(document.getElementById("ueditor_0").contentWindow.document.body.innerHTML=\"这个是通过JS写入的在fram里面");
操作浏览器cookie
获取cookie
public void getCookie_all(){
Set<Cookie> allCookie = driver.manage().getCookies();
for(Cookie loadedCookie:allCookie){
System.out.print("作用域:"+loadedCookie.getDomain());
名称:loadedCookie.getName()
值:loadedCookie.getValue()
范围:loadedCookie.getArea()
过期时间:loadedCookie.getExpriy()
}
}
删除Cookie
public void decookie(){
message("删除Cookie");
driver.manage().deleteAllCookies();
}
输入框操作API
sendKeys()
clear()
getText()
click()
选择框处理{
单选框
message("定位单选框api进行中");
WebElement radio = driver.findElement(By.name("Sex"));//定位到该单选框
message("检查元素是否选中api进行中");
Checkbox(radio,"单选框");
复选框
message("定位复选框api进行中");
WebElement box = driver.findElement(By.name("Bike"));//定位到该单选框
message("检查元素是否选中api进行中");
下拉框
Checkbox(box,"复选框")
message("下拉框api进行中");
Select list = new Select(driver.findElement(By.name("listname")));
message("下拉框通过index进行选择api进行中");
message("下拉框通过属性进行选择api进行中");
list.selectByValue("下拉框三");
}
特殊窗口处理{
Iframe窗口处理 弹窗处理
}
页面元素处理{
等待加载 根据属性获取元素值 获取对象的css属性
获取对象状态{
页面是否显示isdisplay()
元素是否存在find_element
元素是否选中isSelected()
是否处于灰化状态isEnabled()
}
}
窗口处理API
JS操作{
js定位 js单击元素
}
特殊API{
报错时截屏保存
模拟鼠标右键操作(用处不大)
鼠标悬浮(用处不大)
上传文件
日期控制处理
浏览器滚动条操作
}
JAVA
package com.TEST;import org.openqa.selenium.*;import org.openqa.selenium.chrome.ChromeDriver;public class openChrome {public static void main(String[] args) {System.setProperty("webdriver.chrome.driver","C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe");WebDriver driver = new ChromeDriver();driver.get("http://www.baidu.com");driver.get("http://company.ef360.com/Detail/Contact277922.html");driver.findElement(By.id("kw")).sendKeys("知乎");driver.findElement(By.id("su")).click();driver.findElement(By.name("wd")).sendKeys(" name");driver.findElement(By.className("s_ipt")).sendKeys(" class_name");//driver.findElement(By.tagName(""));driver.findElement(By.linkText("图片")).click();driver.findElement(By.xpath("//span[@class='col2']/a")).click();driver.findElement(By.xpath("//a[contains(text(),'供求商机')]")).click();}}
PYTHON
# -*- coding: utf-8 -*-# from selenium import webdriver# browser = webdriver.Chrome()# browser.get('http://www.baidu.com/')from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.common.keys import Keysfrom selenium.webdriver.support.ui import Selectfrom selenium.common.exceptions import NoSuchElementExceptionfrom selenium.common.exceptions import NoAlertPresentExceptionimport unittest, time, reclass TESR(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome() self.driver.implicitly_wait(30) self.base_url = "http://210.38.192.31:81/test.aspx" self.verificationErrors = [] self.accept_next_alert = True def test_(self): # driver = self.driver # driver.maximize_window()#窗口最大化 # driver.get(self.base_url) # print 'driver_title:',driver.title #标题 # time.sleep(0.5) # driver.find_element_by_id("inputSearch").click() # driver.find_element_by_id("inputSearch").clear() # driver.find_element_by_id("inputSearch").send_keys("SQL") # time.sleep(0.5) # driver.find_element_by_id("btnSubmit").click() # time.sleep(0.5) # driver.find_element_by_xpath("//span[@class='link_title']").click() # time.sleep(0.5) # driver.back() # time.sleep(0.5) # driver.refresh() # time.sleep(0.5) # driver.forward() # time.sleep(2) # driver.close() driver = self.driver driver.maximize_window() driver.get(self.base_url) print 'Title:',driver.title driver.find_element_by_xpath("//*[@id='txtUsername_Lib']").send_keys('1411003****') driver.find_element_by_xpath("//*[@id='txtPas_Lib']").send_keys('*********') driver.find_element_by_xpath("//*[@id='btnLogin_Lib']").click() time.sleep(2) driver.get_cookies() driver.get("http://210.38.192.31:81/user/bookborrowedhistory.aspx") print 'title:',driver.title driver.find_element_by_link_text('修改密码').click() print '运行成功!' time.sleep(5) driver.close() def is_element_present(self, how, what): try: self.driver.find_element(by=how, value=what) except NoSuchElementException as e: return False return True def is_alert_present(self): try: self.driver.switch_to_alert() except NoAlertPresentException as e: return False return True def close_alert_and_get_its_text(self): try: alert = self.driver.switch_to_alert() alert_text = alert.text if self.accept_next_alert: alert.accept() else: alert.dismiss() return alert_text finally: self.accept_next_alert = True def tearDown(self): self.driver.quit() self.assertEqual([], self.verificationErrors)if __name__ == "__main__": unittest.main()
可通过
print help(webdriver.Chrome())
查看在python下selenium的详细用法
阅读全文