## 元素操作
> 前面講到了不少知識都是定位元素,定位只是第一步,定位之后需要對這個原素進
行操作。鼠標點擊呢還是鍵盤輸入,這要取決于我們定位的是按鈕還輸入框。
一般來說,webdriver 中比較常用的操作對象的方法有下面幾個
>* click 點擊對象
>* send_keys 在對象上模擬按鍵輸入
>* clear 清除對象的內容,如果可以的話
>* submit 清除對象的內容,如果可以的話
[TOC]
#### 1.輸入框
~~~
$element = $driver->findElement(WebDriverBy::id('wd'));
$element->sendKeys("wwe"); //在輸入框中輸入內容
$element->clear(); //將輸入框清空
$element->getAttribute('value'); //獲取輸入框的文本內容
~~~
#### 2.單選框
~~~
$radio = $driver->findElement(WebDriverBy::id('BookMode'));
$radio->click(); //選擇某個單選項
$radio->isSelected(); //判斷某個單選項是否已經被選擇
~~~
#### 3.多選框
~~~
$checkbox = $driver->findElement(WebDriverBy::id('myCheckbox'));
$checkbox->click(); //選擇某選項
$checkbox->isSelected(); //判斷該選項是否已經被選擇
$checkbox->isEnabled(); //判斷是否enable
~~~
#### 4.下拉框
> 下拉框是我們最常見的一種頁面元素,對于一般的元素,我們只需要一次就定位,但下拉框里的內容需要進行兩次定位,先定位到下拉框,再定位到下拉框內里的選項。
~~~
$select = $driver->findElement(WebDriverBy::id('myselect'));
$select->findElement(WebDriverBy::xpath("//option[@value='100']"))->click(); //找到值為100的選項進行選中
~~~
#### 5.按鈕
~~~
$btn = $driver->findElement(WebDriverBy::id('btn'));
$btn->click(); //點擊按鈕
$btn->isEnabled(); //判斷是否enable
~~~
#### 6.文件上傳
~~~
$upload = $driver->findElement(WebDriverBy::id('img-upload'));
$filePath = "C:\test\\uploadfile\\media_ads\\test.jpg";
$upload->sendKeys($filePath);
~~~
#### 7.指定元素點擊
> 因為有時候因為種種原因(如元素上有蒙版層或者因為一些浮動的div導致坐標變化或者不可點擊),而不能使用$ele.click()時,采用通用的方式,就是用JS執行點擊事件。而且點擊事件是可被監聽的,可在元素上寫onclick事件進行監聽。
~~~
//用webdriver獲取對象,再進行JS操作
$ele = $driver->findElement(WebDriverBy::id('haha'));
$driver->executeScript("arguments[0].click();",[$ele]);
//用JS獲取對象進行操作
$js = <<<js
var ele = document.getElementById('haha');
ele.click();
js;
$driver->executeScript($js);
~~~
#### 8.滾動到指定元素
> 用JS的方式滾動到指定的元素。
~~~
$ele = $driver->findElement(WebDriverBy::id('haha2'));
$driver->executeScript("arguments[0].scrollIntoView();",[$ele]);
~~~
#### 9.移動到指定元素
> 移動的時候,鼠標不會真正移動,但實際上已移動,這個可以在haha2元素上寫一個onmouseover事件進行監聽即可測試。
~~~
$ele = $driver->findElement(WebDriverBy::id('haha2'));
$driver->getMouse()->mouseMove($ele->getCoordinates());
~~~