上一篇《元素定位-----Selenium快速入门(二)》说了,如何定位元素,本篇说说找到的元素(WebElement)该怎么用。

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 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的用法,千万别做坏事。

元素(WebElement)-----Selenium快速入门(三)的更多相关文章

  1. 元素定位-----Selenium快速入门(二)

    一.eclipse设置 工欲善其事必先利其器,在说元素定位之前,先来设置下eclipse. 首先放大一下字体,点击windows-preferences 其次,eclipse对于java的智能提示默认 ...

  2. 隐式等待-----Selenium快速入门(九)

    有时候,网页未加载完成,或加载失败,但是我们后续的代码就已经开始查找页面上的元素了,这通常将导致查找元素失败.在本系列Selenium窗口切换-----Selenium快速入门(六)中,我们就已经出现 ...

  3. Selenium下拉菜单(Select)的操作-----Selenium快速入门(五)

    对于一般元素的操作,我们只要掌握本系列的第二,三章即可大致足够.对于下拉菜单(Select)的操作,Selenium有专门的类Select进行处理.文档地址为:http://seleniumhq.gi ...

  4. 显式等待-----Selenium快速入门(十)

    上一篇说了元素定位过程中的隐式等待,今天我们来探讨一下显示等待.显式等待,其实就是在使用WebDriverWait这个对象,进行等待.显式等待对比隐式等待,多了一些人性化的设置,可以说是更细化的隐式等 ...

  5. Appium自动化(9) - appium元素定位的快速入门

    如果你还想从头学起Appium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1693896.html 快速入门栗子:boss直聘 app ...

  6. Selenium框架切换-----Selenium快速入门(七)

    上一篇说了窗口的切换,本篇说说框架的切换. 切换框架:是指切换html中的iframe标签元素或者frame标签元素,注意,并不包括frameset 以下是常用的方法: 方法 说明 WebDriver ...

  7. Selenium简介与环境搭配-----Selenium快速入门(一)

    Selenium是一套自动化测试框架.官方网站是:https://www.seleniumhq.org/  某些童鞋访问可能需要FQ. Selenium支持多种语言开发,例如Java,Python,C ...

  8. 终结篇:RemoteWebDriver与Grid简介-----Selenium快速入门(十五)

    Selenium的基本使用,已经介绍得差不多了,今天来简单说说RemoteWebDriver与Grid,也是本系列的最后一篇. 还记得本系列第一章(Selenium简介与环境搭配)的配置中,提到我们下 ...

  9. Selenium窗口切换-----Selenium快速入门(六)

    有时候,我们打开多个窗口,进行多窗口操作,那么窗口间该如何切换呢? 切换的方法有两个,一个是通过窗口标题来验证,另一个是通过窗口特定的内容来验证,这两个方法都要求得到的标题或内容是唯一的. 用到的相关 ...

随机推荐

  1. javascript 欺骗词法作用域

    如果词法作用域完全由写代码期间函数所声明的位置来定义,怎样才能在运行时来"修改"(也可以说欺骗)词法作用域呢?    JavaScript 中有两种机制来实现这个目的.社区普遍认为 ...

  2. 蓝桥杯 基础练习 之 FJ的字符串

    问题描述 FJ在沙盘上写了这样一些字符串: A1 = "A" A2 = "ABA" A3 = "ABACABA" A4 = "AB ...

  3. 阿里巴巴Java开发规约插件地址

    Git地址: https://github.com/alibaba/p3c eclipse 安装地址: https://p3c.alibaba.com/plugin/eclipse/update

  4. JavaScript数据迭代方法差别

    js有很多总接待方法,ES6之后又新增了几个: 这里主要讨论数组迭代遍历的方法所以不会细讲for...in... ES5.ES6数组迭代方法有: forEach map filter some eve ...

  5. ubuntu下boost编译安装

    ubuntu下boost编译安装 boost 安装 1.依赖安装 apt-get install mpi-default-dev libicu-dev python-dev python3-dev l ...

  6. iptables转发备忘

    iptables -F sysctl net.ipv4.ip_forward=1 iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 8766 - ...

  7. Hibernate学习(三)一对多数据的保存

    保存习惯代码 @Test public void saveTwoTableTest(){ Transaction transaction = null; try { transaction = ses ...

  8. Yii2中JSONP跨域问题的解决

    Jsonp(JSON with Padding) 是 json 的一种"使用模式",可以让网页从别的域名(网站)那获取资料,即跨域读取数据. 为什么我们从不同的域(网站)访问数据需 ...

  9. 关于本地化(localization)

    关于本地化(localization) 我们都知道,如果不需要做国际化版本的App.我们只需要在info.plist 里修改CFBundleDisplayName就可以了,其实做国际化也就是在不同的国 ...

  10. 判断ios或者android

    <script type="text/javascript"> $(function () { // android和iso下载链接 var u = navigator ...