XPath是一種用於在XML文件中定位節點的語言。
當沒有適合要查詢的元素的id
或name
屬性時,可以使用XPath作為替代。
XPath提供了以下定位策略:
XPath Absolute使使用者能夠提及從根HTML標記到特定元素的完整XPath位置。
建議不要這樣做,因為它需要完整的XPath位置,如果Web元素的位置發生更改或者屬於其他父級,則XPath將無法找到所需的元素。
語法://html/body/tag1[index]/tag2[index]/.../tagN[index]
範例://html/body/div[2]/div/div[2]/div/div/div/fieldset/form/div[1]/input[1]
如果沒有適合要查詢的元素的id
或name
屬性,則始終建議使用XPath屬性。
XPath屬性允許使用不同的屬性定位Web元素。
//htmltag[@attribute1='value1' and @attribute2='value2']
//input[@id='passwd' and @placeholder='password']
考慮一個關於如何在Selenium IDE中將XPath用作命令目標的範例。
我們將建立一個登入測試,以便可以更好地了解通過XPath定位元素。 因為,不建議使用XPath Absolute,因此使用XPath屬性來定位Web元素。
將第一個命令的屬性修改為:
open
http://localhost
本地登入頁面檔案:index.php 的程式碼如下所示:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0">
<title>Selenium範例™ - 易百教學</title>
<body>
<div style="margin:auto;width:60%;">
<p>
Selenium範例
</p>
<?php
if($_POST){
$username = isset($_POST['username'])? trim($_POST['username']):'';
$password = isset($_POST['password'])? trim($_POST['password']):'';
if($username=='yiibai' && $password = '123456'){
echo "<p>您好,{$username} !</p>";
}
}
?>
<form id="loginForm" method="POST">
<input name="username" type="text" id="username"/>
<input name="password" type="password" id="password"/>
<input name="continue" type="submit" id="continue" value="登入" />
</form>
</div>
</body>
<html>
對於要輸入的第二個命令,需要「使用者名」文字框的標識元素,這將幫助IDE識別目標位置。右鍵單擊「使用者名」文字框,然後選擇「檢查元素」。
它將啟動一個視窗,其中包含開發「usename」文字框所涉及的所有特定程式碼。
因此,將「username」文字框的XPath屬性寫為://input[@id="username" and @name="username"]
將第二個命令的屬性修改為:
命令:open
目標://input[@id="username" and @name="username"]
執行此命令後,將單擊「使用者名」文字框。
對於另外兩個元素:密碼 輸入框和 登入 按鈕,可以類似的方式填寫命令。填寫完成後的自動測試命令如下所示:
然後開始執行測試,得到結果如下: