WebElement常用方法:
返回值 方法名 说明void clear() 如果找到的元素是input 或 textarea,则清除它的值。其他元素不受影响。
void click()
点击一个元素,元素必须可见,并且宽高都必须大于0。如果这个点击操作导致页面刷新的话,
必须要抛弃这个元素的所有引用,并且对这个元素的进一步操作,
都会引发StaleElementReferenceException
String getAttribute(String name) 通过属性名,获得属性值。例如,我想获得value的值,可以调用getAttribute("value")
String getCssValue(String propertyName) 通过属性名,获得Css属性值,例如getCSSValue("height")
String getTagName() 获得该元素的标签名,例如input,p等
String getText()
获取页面上可见的文字(没有被css隐藏),包括子元素,获得的文本去除任何前导或后置的空格。
例如,html源码是<p > aaaaa <br/>bbbbb<br/><a href="#"> cccccc </a></p>
实际输出
aaaaa
bbbbb
cccccc
boolean isDisplayed() 判断该元素是否可见。
boolean isEnabled() 判断元素是否可用。
boolean isSelected() 判断元素是否被选中,只用于单选或者多选按钮(radio button,check box)
void sendKeys(CharSequence... keys) 模拟输入字符
void submit()
如果当前元素是一个form或者是在form内的一个元素,则会提交表单。
否则,引发NoSuchElementException
下面用一个自动注册的例子,来说明上面一些方法的使用。
我们注册的地址是:
之所以选择这个,是因为它不需要验证码,而且虽然分成三步注册,实际填好第一个注册界面,点击注册,即可注册成功,后面不需要绑定手机什么的。
首先,我们用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();