1. 元素的定位css
Selenium自動化,咱們須要作的最基本的事情就是在頁面找到元素,並經過腳本程序去操做這個元素,實現模擬人操做。咱們有多種定位元素的方式能夠選擇:html
經過元素的ID定位元素:瀏覽器
findElement(By.id(element));spa
經過元素的名稱定位元素:線程
findElement(By.name(element));3d
經過元素的html中的位置定位元素:調試
findElement(By.xpath(element));orm
經過元素的標籤名稱定位元素:htm
findElement(By.tagName(element));blog
經過元素的連接名稱定位元素:
findElement(By.linkText(element));
經過元素的類名定位元素:
findElement(By.className(element));
經過元素的css定位元素:
findElement(By.cssSelector(element));
經過元素的部分連接名稱定位元素:
findElement(By.partialLinkText(element));
2. 元素的操做
不一樣的元素咱們進行不一樣的操做,按鈕的點擊、輸入框的字符輸入、或者是元素的內容獲取,不一樣的元素咱們操做的方式不一。
對ID爲element的元素進行點擊操做:
driver.findElement(By.id(element)).click();
對ID爲element的元素進行發送字符操做:
driver.findElement(By.id(element)).sendKeys(「XXXXXX」);
這是最簡單的兩例元素的操做,其實咱們還有許多的操做,能夠去慢慢的探索腳本的實現方式,好比頁面title的獲取、瀏覽器標籤的切換等等
如圖,「關於oppo」元素在一個鼠標懸浮菜單下面,直接定位元素是定位不到的,這裏則須要幾部操做才能定位到元素, 須要用到Selenium提供的一個強大的用於真實的模擬用戶交互的一個類:Actions
Actions action = new Actions(driver);
Tools tool=new Tools();
boolean flag=true;
driver.get("http://www.oppo.com/cn/");
//鼠標懸浮在品牌導航標籤上面 action.moveToElement(driver.findElement(By.xpath("html/body/header/div[2]/div/div[2]/nav/div/ul/li[3]/a/span[1]"))).perform();
tool.ms(1000); driver.findElement(By.xpath("html/body/header/div[2]/div/div[2]/nav/div/ul/li[3]/ul/li[1]/a")).click();
tool.ms(1000);
代碼中的tool.ms(1000);實際上是就是使用Thread.sleep(long millis); 使得當前線程休眠一1m,等待上一步驟響應完成。
Actions這個類提共了一系列的API供模擬交互:
keyDown : 用於模擬按鍵被按下
keyUp : 用於模擬按鍵鬆開
doubleClick : 用於模擬雙擊
clickAndHold : 用於模擬鼠標左鍵點住不放開
release : 用於模擬鬆開鼠標,與clickAndHold相配合
moveToElement : 將鼠標移動至元素的中間位置
contextClick : 模擬鼠標右鍵點擊
dragAndDrop : 拖拽
3. 小結
元素操做的步驟:
步驟一: 肯定元素的定位方式(調試更改)
步驟二: By element=(By.xpath(「XX/XX」));
步驟三: WebElement fdelement= driver.findElement(element);
步驟四: fdelement.click();