当前位置: 首页 > 工具软件 > php-webdriver > 使用案例 >

remotewebdriver php,php-webdriver 基本功能

公孙和怡
2023-12-01

php-webdriver 是一個自動化測試的工具,這篇文章將介紹 php-webdriver 中常見的功能。

打開指定網頁get

Example$driver->get("http://www.google.com.tw/");

輸入框操作sendKeys

輸入框操作是最基本的,你必需先使用 findElement 來找到你要輸入的 input ,然後透過 sendKeys 將指定的值輸入。clear :清空 input

sendKeys:輸入 input

Example$element=$driver->findElement(

WebDriverBy::cssSelector('.input')

);

$element->clear();//清空

$element->sendKeys("test value");

操作方向鍵sendKeys: WebDriverKeys::LEFT

下面這個範例,會在 input 中會填入 "AC" 這兩個字,然後操作方向鍵往左邊移動一格,接著再輸入 B ,最後結果, input 中就會有字串 "ABC"

Example$element=$driver->findElement(WebDriverBy::cssSelector('input'));

$element->sendKeys("AC");

$element->sendKeys(WebDriverKeys::LEFT);

$element->sendKeys("B");

Select 選擇selectByValue

一般來說你可以使用 sendKeys 的方式來選取 option,但是 selenium 預設的 method sendKeys,是選取你看到的文字內容,例如我有一個選單 value="math", text="數學" ,那麼我的程式要這樣寫 sendKeys("數學"),文字內容有可能會因為各種原因而改變其值,所以我會傾向去對 value 來做選取。

而 php-webdriver 已經有提供另一種方式來選取 option ,你可以使用 WebDriverSelect 的 selectByValue 就能夠直接選擇 value 而不是 text,是不是方便很多呢。

select by value$elm=$driver->findElement(

WebDriverBy::cssSelector("select")

);

$selectAcao=new WebDriverSelect($elm);

$selectAcao->selectByValue("math");

改變 select 的值,並觸發 Change Event

用 php-webdriver sendKeys 方式去選擇 select 會有兩個問題,第一問題是你只能指定要選擇的 label 名稱,而不能指定 value ,第二個問題則是,選了 select 的選項之後,瀏覽器不會自動執行 select change event ,因為 Selenium 原本就是用 Javascript 寫的, Selenium 它本身就會用 Javascript 去修改 select 的值,這樣無法觸發 change event 。

這裡我使用 YUI 3 來選取 select 的 value ,並自動去執行 select 的 change event (你要測試的網頁必需要有載入 YUI 3,當然你也可以用 executeScript 的方式去載入 YUI 3 )。

Example$driver->executeScript('YUI().use("node","node-event-simulate", function(Y) { var s = Y.one(".class select").set("value", "xxx"); });');

$driver->executeScript('YUI().use("node","node-event-simulate", function(Y) { Y.one(".class select").simulate("change"); });');

執行 JavascriptexecuteScript

使用 Selenium 有個很方便的 method ,那就是 executeScript,很多 Selenium 沒有支援的功能,你都可以直接使用 Javascript 來執行。

範例$driver->executeScript('var d = document.querySelector(".class"); d.style.visibility="visible";');

拖拉物件 : drag and drop

範例$sourceElm=$driver->findElement(WebDriverBy::cssSelector('.source'));

$targetElm=$driver->findElement(WebDriverBy::cssSelector('.target'));

$action=$driver->action();

$action->dragAndDrop($sourceElm,$targetElm)->perform();

Element 操作getText : element 內容

getTagName : 取得 element 名稱

getAttribute

getCSSValue

getLocation : 取得 element 所在位置

getLocationOnScreenOnceScrolledIntoView

getSize

getID

isEnabled

isSelected

isDisplayed

clear

click

sendKeys

submit

getText 取得 element 的 innerText 內容

Element 必需是可見的,不能隱藏,例如 「display: none, opacity: 0;, visibility: hidden」 都會造成無法取得 text。

範例$elm=$driver->findElement(

WebDriverBy::cssSelector('.classname')

);

echo$elm->getText();

 类似资料: