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

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的详细用法



阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 安卓p图软件 p图神器 比较好的p图软件 好用的p图软件 in是什么 p图软件哪个好 p图软件 下载美图软件 in out 手机专业p图软件 in addition all in one fall in love somewhere in time woman in love linked-in lean in in ear sql in rolling in the deep ghost in the shell hdmi in in sight in代表什么意思 in house join in think in eve1iy1in张丽在线播放 io io流 .io io设备 io什么意思 io是什么意思 云南快乐io分 io接口 微软红光鲨io1.1 io1.1鼠标 io异常是什么意思 io域名注册 i/o是什么意思