Selenium原理及元素定位方法(JAVA)
生活随笔
收集整理的這篇文章主要介紹了
Selenium原理及元素定位方法(JAVA)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Selenium原理
1、Selenium 1.0(Selenium RC):
早期的Selenium使用的是Javascript注入技術與瀏覽器打交道,需要Selenium RC啟動一個Server,將操作Web元素的API調用轉化為一段段Javascript,在Selenium內核啟動瀏覽器之后注入這段Javascript。因為Javascript可以獲取并調用頁面的任何元素,自如的進行操作,所以才實現了Selenium的目的:自動化Web操作2、Selenium 2.x
當Selenium2.x 提出了WebDriver的概念之后,它提供了完全另外的一種方式與瀏覽器交互。那就是利用瀏覽器原 生的API,封裝成一套更加面向對象的Selenium WebDriver API,直接操作瀏覽器頁面里的元素,甚至操作瀏覽器 本身(截屏,窗口大小,啟動,關閉,安裝插件,配置證書之類的)。由于使用的是瀏覽器原生的API,速度大大 提高,而且調用的穩定性交給了瀏覽器廠商本身,顯然是更加科學。然而帶來的一些副作用就是,不同的瀏覽器廠 商,對Web元素的操作和呈現多少會有一些差異,這就直接導致了Selenium WebDriver要分瀏覽器廠商不同,而提 供不同的實現。例如Firefox就有專門的FirefoxDriver,Chrome就有專門的ChromeDriver等等。(甚至包含了AndroidDriver和iOS WebDriver)參考文章:https://blog.csdn.net/ant_ren/article/details/7968582
Selenium元素定位方法(八種)
1、通過Name定位元素
1.1、方法:By.name("name的值")介紹:通過元素的name屬性來定位元素(但一般name屬性并不是唯一的)示例: driver.findElement(By.name("")); 1.2、方法:By.tagName("tagName的值");介紹:通過元素的標簽名稱來定位元素示例:driver.findElement(By.tagName(""));1.3、方法:By.className("className的值");介紹:通過元素的class屬性來進行定位(但一般name屬性并不是唯一的)示例:driver.findElement(By.className(""))備注:該方法中的參數只有一個,所以若網頁中class的屬性有多個,只能選取其中一個來進行定位2、通過ID定位元素
2.1、方法:By.id("id的值")介紹:通過元素的id來進行定位示例:driver.findElement(By.id("id的值"));備注:元素的id是唯一的,所以首選By.id方法來進行元素的定位;但有的元素沒有id,就需要選擇其他的方法來進行元素的定位3、通過LinkText定位元素
3.1、方法:By.linkText("鏈接的全部內容")介紹:作用于a標簽,匹配鏈接的全部文字內容示例:driver.findElement(By.linkText("車輛管理"));3.2、方法:By.partiallinkText("鏈接的部分內容")介紹:作用于a標簽,匹配鏈接的部分文字內容示例:driver.findElement(By.partiallinkText("車輛"));4、通過css定位元素
4.1、方法:By.cssSelector("css表達式");選擇某一個符合css表達式的元素By.cssSelectors("css表達式");選擇全部符合css表達式的元素 介紹:通過css表達式這種組合的方式來進行定位,和xpth方式基本相同示例:driver.findElement(By.cssSelector(".bgcolor"));備注:1、cssSelector即css選擇器,即 .bgcolor{ color : red }這個CSS表達式中 .bgcolor就是cssSelector2、該方法還可以使用id,tagname,class來定位元素(1)ID: By.cssSelector("#ID值"); //需要在id值前面加上#(2)Tagname:By.cssSelector("tag值");(3) Class:By.cssSelector(".class值"); //需要在前面加上 .(加上點)5、通過xpth定位元素
5.1、方法:By.xpth("元素路徑");選擇某一個符合css表達式的元素介紹:通過元素路徑來進行定位 示例:driver.findElement(By.xpth("/html/body/div[1]/section/aside/div/"));備注:元素的路徑可以使用一些瀏覽器組件來進行查找,例如xpthFind、xpthHelp等,可以快速定位元素的路徑5.2、xpth定位語法/ 絕對定位,從根節點進行選取// 相對定位,從匹配選擇的當前節點選擇文檔中的節點. 選取當前節點.. 選取當前節點的父節點@ 選取屬性,@class='XXX' @id='XXX' 屬性放在[]中 【 //div[@name='phone']//input 】* 通配符,匹配所有 //*@* 通配符,匹配所有屬性 //*[@*='hello'] 5.3、xpth定位方式xpath定位分為絕對定位和相對定位(1)絕對定位 (/):嚴格按照路徑、同級元素的位置來定位,缺點:頁面一動,基本崩潰例如:/html/body/div[2]/div/form/div[1]/input 以/html開始(2)相對定位(//):有一個參照物 不考慮路徑和位置 以//開頭 //標簽名[@屬性名稱=值]例如//input[@name='phone'] # 標簽名為input并且name屬性值為phone 5.4、其他語法(1)and or示例: //input[@name='phone' and @datatype='m'](2)包含 //input[contains(@class,'username') ] //標簽名[contains(@屬性值,被包含的值)](3)文本內容定位示例://a[text()='數據分析'] //a[contains(text(),'數據分析')]有問題的話,歡迎指正,謝謝
總結
以上是生活随笔為你收集整理的Selenium原理及元素定位方法(JAVA)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: flash大厅_Flash必要的系统组件
- 下一篇: Macbookpro 15年版,换固态键