作者:Surpassme

来源:http://www.jianshu.com/p/83d7416c4b7d

声明:本文为原创文章,如需转载请在文章页面明显位置给出原文链接,谢谢。

Button通常有两种形式:标准按钮和提交按钮,如下图所示:

其中标准的按钮通常是由button标签创建,而提交按钮通常是由input创建,且通常在form里面。

HTML 源码如下:

<button id="button" class="nav" data-id="124" style="font-size:20px">标准按钮</button> <br />
<form name="input" action="index.html" method="post" >
用户名:<input type="text" name="username" /><br /><br />
密 码:<input type="password" name="pwd" /><br/>
<input type="submit" name="submit" value="注册-提交按钮" />
</form>

在Web页面中,有一些元素看起来非常像是按钮,但有一部分是通过CSS来实现的。

通过文本点击标准按钮

driver.FindElement(By.XPath("//button[contains(text(),'标准按钮')]")).Click();

通过文本点击提交按钮

在HTML里面提交按钮通常位于form内,按钮的名字是通过属性value来显示的。而在显示的文字中可能会包含一些额外的空格或不可见的字符。源码如下:

<input type="submit" name="submit" value="测试 按钮  " />

通过以下的脚本进行会失败,因为存在空格。报错信息如下图所示:

 driver.FindElement(By.XPath("//input[@value='测试 按钮']")).Click();

这时,我们只需要修改一下脚本里面的文本值即可:

driver.FindElement(By.XPath("//input[@value='测试 按钮  ']")).Click();

提交表单

在Selenium官方文档里面,提交表单通常是由Submit方法实现,下面所示脚本是演示用户登录操作:

            IWebElement username = driver.FindElement(By.Name("username"));
username.SendKeys("UserName");
IWebElement pwd = driver.FindElement(By.Name("pwd"));
pwd.SendKeys("pwd");
username.Submit();

上面是一种方法,而在实际页面中,我们都是通过点击提交按钮来进行操作的,以下是实现方法:

        driver.FindElement(By.Name("username")).SendKeys("UserName");
driver.FindElement(By.Name("pwd")).SendKeys("pwd");
driver.FindElement(By.XPath("//input[@value='注册-提交按钮']")).Click();

尽管在一个form里面不太可能会存在多个提交按钮,但如果存在这种情况,使用** Submit**方法仅会点击第一个提交按钮,这样会造成混乱。

通过ID点击按钮

如果元素有ID,那么通过ID来定位元素是最好的方式。对于测试人员而言,通常会碰到元素中没有ID的情况,与其花很长时间来研究如何定位元素,还不如在这个时候多与开发沟通,增加元素的ID,这样也能减小测试的难度。

driver.FindElement(By.Id("button")).Click();

通过Name点击按钮

driver.FindElement(By.Name("submit")).Click();

通过图片点击按钮

在测试的过程中会遇到另一种类型的按钮。在一个form内,图片看起来非常像按钮,如下图所示:

<input type="image" src="images/button_login.jpg" />

driver.FindElement(By.XPath("//input[contains(@src, 'button_login.jpg')]")).Click();

通过JavsScript点击按钮

在用尽一切方法都不能点击按钮时,可以考虑用JavaScript来实现点击按钮,如下所示:

 IWebElement btn = driver.FindElement(By.Name("submit"));
((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].click()", btn);

[Selenium With C#基础教程] Lesson-04 按钮的更多相关文章

  1. [Selenium With C#基础教程] Lesson-07 复选框

    作者:Surpassme 来源:http://www.jianshu.com/p/98ede43da3c3 声明:本文为原创文章,如需转载请在文章页面明显位置给出原文链接,谢谢.   [作者:Surp ...

  2. [Selenium With C#基础教程] Lesson-01环境搭建

    作者:Surpassme 来源:http://www.jianshu.com/p/33b87bc00233 声明:本文为原创文章,如需转载请在文章页面明显位置给出原文链接,谢谢. 最近开始复习Sele ...

  3. [Selenium With C#基础教程] Lesson-02 Web元素定位

    作者:Surpassme 来源:http://www.jianshu.com/p/cfd4ed1daabd 声明:本文为原创文章,如需转载请在文章页面明显位置给出原文链接,谢谢. 使用Selenium ...

  4. [Selenium With C#基础教程] Lesson-05 文本框

    作者:Surpassme 来源:http://www.jianshu.com/p/7dca7d0d1ea3 声明:本文为原创文章,如需转载请在文章页面明显位置给出原文链接,谢谢. 文本框在Web页面中 ...

  5. [Selenium With C#基础教程] Lesson-03 超级链接

    作者:Surpassme 来源:http://www.jianshu.com/p/83809943e751 声明:本文为原创文章,如需转载请在文章页面明显位置给出原文链接,谢谢. 超级链接或链接是We ...

  6. [Selenium With C#基础教程] Lesson-06 单选按钮

    作者:Surpassme 来源:http://www.jianshu.com/p/08ee1929875f 声明:本文为原创文章,如需转载请在文章页面明显位置给出原文链接,谢谢. 单选按钮通常用在需要 ...

  7. Selenium IDE 基础教程

    Selenium IDE 基础教程 1.下载安装     a 在火狐浏览其中搜索附件组件,查找 Selenium IDE     b 下载安装,然后重启firefox 2.界面讲解      在菜单- ...

  8. [小北De编程手记] : Lesson 04 - Selenium For C# 之 API 上

    这一部分,我准备向大家介绍Selenium WebDriver的常用API,学习这部分内容需要大家最好有一些简单的HTML相关知识,本文主要涉及到以下内容: Selenium API:元素检查 Sel ...

  9. [分享]Ubuntu12.04安装基础教程(图文)

    [分享]Ubuntu12.04安装基础教程(图文) 原文地址: http://teliute.org/linux/Ubsetup/lesson21/lesson21.html 1.进入 live cd ...

随机推荐

  1. JasperReport报表导出踩坑实录

    写在最前面 翻了翻博客,因为太忙,已经好久没认真总结过了. 正好趁着今天老婆出门团建的机会,记录下最近这段时间遇到的大坑-JasperReport. 六月份的时候写过一篇利用poi文件导入导出的小De ...

  2. php502故障处理

    一次打开网站,发现502,第一反应肯定是php-fpm没启动,尝试启动还是502. 1.首先查询Nginx日志发现如下连接PHP失败: 2016/07/29 15:56:04 [error] 2376 ...

  3. 手把手教你使用node-inspector调试nodejs

    最近再看nodejs,这个东西是运行在服务端的,也就是说我们在客户端看不到相应的js代码,那么怎么调试了?目前主流的方法有三种.第一是采用node-inspector.第二种采用nodejs内置的调试 ...

  4. 对称加密——对入参进行DES加密处理

    体验更优排版请移步原文:http://blog.kwin.wang/programming/symmetric-encryption-des-js-java.html 对称加密是最快速.最简单的一种加 ...

  5. Dbvisualizer设置SQL语句自动提示

    Dbvisualizer默认不自动提示SQL语句的命令及查询的表,虽然可以通过Ctrl+/快捷键进行手动调用出提示信息,用习惯了PLSQL Developer难免有些不适应. 设置自动提示方法: 点击 ...

  6. SPI子系统分析之三:驱动模块

    内核版本:3.9.5 SPI核心层(平台无关) SPI子系统初始化的第一步就是将SPI总线注册进内核,并且在/sys下创建一个spi_master的类,以后注册的从设备都将挂接在该总线下. 下列函数位 ...

  7. jenkins-为什么要持续集成

    持续集成(Continuous Integration),也就是我们经常说的 CI,是现代软件开发技术的基础.本文论述了当前软件开发过程中存在的问题,讲解了持续集成.持续集成服务器的概念,最终探讨了为 ...

  8. Vertex and fragment programs

    [Vertex and fragment programs] When you use vertex and fragment programs (the so called "progra ...

  9. Stencil

    [Stencil] The stencil buffer can be used as a general purpose per pixel mask for saving or discardin ...

  10. 网站转为https协议,苹果商店应用转为https协议总结

    log_format www.44755.com '$remote_addr - $remote_user [$time_local] "$request" ' '$status ...