上一篇《元素定位-----Selenium快速入門(二)》說了,如何定位元素,本篇說說找到的元素(WebElement)該怎么用。
WebElement常用方法:
返回值 | 方法名 | 說明 |
void | clear() | 如果找到的元素是input 或 textarea,則清除它的值。其他元素不受影響。 |
void | click() | 點擊一個元素,元素必須可見,並且寬高都必須大於0。如果這個點擊操作導致頁面刷新的話, 必須要拋棄這個元素的所有引用,並且對這個元素的進一步操作, |
String | getAttribute(String name) | 通過屬性名,獲得屬性值。例如,我想獲得value的值,可以調用getAttribute("value") |
String | getCssValue(String propertyName) | 通過屬性名,獲得Css屬性值,例如getCSSValue("height") |
String | getTagName() | 獲得該元素的標簽名,例如input,p等 |
String | getText() | 獲取頁面上可見的文字(沒有被css隱藏),包括子元素,獲得的文本去除任何前導或后置的空格。 例如,html源碼是<p id="test"> aaaaa <br/>bbbbb<br/><a href="#"> cccccc </a></p> 如果我們得到的WebElement ele=driver.findElement(By.id("test")),那么ele.getText()實際輸出 aaaaa bbbbb cccccc |
boolean | isDisplayed() | 判斷該元素是否可見。 |
boolean | isEnabled() | 判斷元素是否可用。 |
boolean | isSelected() | 判斷元素是否被選中,只用於單選或者多選按鈕(radio button,check box) |
void | sendKeys(CharSequence... keys) | 模擬輸入字符 |
void | submit() | 如果當前元素是一個form或者是在form內的一個元素,則會提交表單。 否則,引發NoSuchElementException |
下面用一個自動注冊的例子,來說明上面一些方法的使用。
我們注冊的地址是:http://www.eshimin.com/pages/account/register/regIndex.jsp
之所以選擇這個,是因為它不需要驗證碼,而且雖然分成三步注冊,實際填好第一個注冊界面,點擊注冊,即可注冊成功,后面不需要綁定手機什么的。
首先,我們用chrome的F12調試工具,獲得頁面中元素的各ID。
需要注意的是,當“我已閱讀並同意”未選中時,“注冊”是不可用的,因此,我們先選中同意,然后輸入其他文本框,為什么要先選中?大家自己思考一下。
下面是詳細的代碼,都有詳盡的解釋。
System.setProperty("webdriver.chrome.driver", "D:/WorkSpace/SeleniumTest/tools/chromedriver.exe"); WebDriver driver=new ChromeDriver(); driver.get("http://www.eshimin.com/pages/account/register/regIndex.jsp"); //定位各種需要填寫的元素 WebElement userName=driver.findElement(By.id("userNameInput")); WebElement pwd=driver.findElement(By.id("passwordInput")); WebElement rePwd=driver.findElement(By.id("rePasswordInput")); WebElement chkAgree=driver.findElement(By.id("secret")); WebElement button=driver.findElement(By.id("nextStep")); //首先判斷check box是否被選中,如果沒有被選中,則選中 if(!chkAgree.isSelected()) chkAgree.click(); //在用戶名文本框輸入用戶名 userName.sendKeys("csdfsss0002"); //輸入密碼 pwd.sendKeys("abc123"); //重復密碼 rePwd.sendKeys("abc123"); //提交表單 button.submit();
如果輸入的賬號密碼成功,提交表單,會跳轉到下一步,實際上是已經注冊成功。
到這里,大家應該意識到什么了,此處只是用來演示selenium 中WebElement的用法,千萬別做壞事。