selenium2 入门

1.1  下载selenium2.0的lib包

http://code.google.com/p/selenium/downloads/list

 

官方User Guide:http://seleniumhq.org/docs/

1.2  用webdriver打开一个浏览器

我们常用的浏览器有firefox和IE两种,firefox是selenium支持得比较成熟的浏览器。但是做页面的测试,速度通常很慢,严重影响持续集成的速度,这个时候建议使用HtmlUnit,不过HtmlUnitDirver运行时是看不到界面的,对调试就不方便了。使用哪种浏览器,可以做成配置项,根据需要灵活配置。

 

  1. 打开firefox浏览器:

        //Create a newinstance of the Firefox driver

        WebDriver driver = newFirefoxDriver();

 

  1. 打开IE浏览器

        //Create a newinstance of the Internet Explorer driver

        WebDriver driver = newInternetExplorerDriver ();

 

  1. 打开HtmlUnit浏览器

        //Createa new instance of the Internet Explorer driver    

        WebDriverdriver = new HtmlUnitDriver();

 

1.3  打开测试页面

对页面对测试,首先要打开被测试页面的地址(如:http://www.google.com),web driver 提供的get方法可以打开一个页面:

        // And now use thedriver to visit Google

        driver.get("http://www.google.com");

 

1.4  如何找到页面元素

Webdriver的findElement方法可以用来找到页面的某个元素,最常用的方法是用id和name查找。

 

假设页面写成这样:

<input type="text" name="passwd"id="passwd-id" />

 

那么可以这样找到页面的元素:

通过id查找:

WebElement element = driver.findElement(By.id("passwd-id"));

或通过name查找:

WebElement element = driver.findElement(By.name("passwd"));

或通过xpath查找:

WebElement element =driver.findElement(By.xpath("//input[@id='passwd-id']"));

 

但页面的元素经常在找的时候因为出现得慢而找不到,建议是在查找的时候等一个时间间隔。

1.5  如何对页面元素进行操作

找到页面元素后,怎样对页面进行操作呢?我们可以根据不同的类型的元素来进行一一说明。

1.5.1 输入框(text field or textarea)

   找到输入框元素:

WebElement element = driver.findElement(By.id("passwd-id"));

在输入框中输入内容:

element.sendKeys(“test”);

将输入框清空:

element.clear();

获取输入框的文本内容:

element.getText();

 

1.5.2下拉选择框(Select)

找到下拉选择框的元素:

Select select = new Select(driver.findElement(By.id("select")));

 
  选择对应的选择项:

select.selectByVisibleText(“mediaAgencyA”);

或

select.selectByValue(“MA_ID_001”);

 

不选择对应的选择项:

select.deselectAll();

select.deselectByValue(“MA_ID_001”);

select.deselectByVisibleText(“mediaAgencyA”);

或者获取选择项的值:

select.getAllSelectedOptions();

select.getFirstSelectedOption();

 

1.5.3单选项(Radio Button)

找到单选框元素:

WebElement bookMode =driver.findElement(By.id("BookMode"));

选择某个单选项:

bookMode.click();

清空某个单选项:

bookMode.clear();

判断某个单选项是否已经被选择:

bookMode.isSelected();

1.5.4多选项(checkbox)

多选项的操作和单选的差不多:

WebElement checkbox = driver.findElement(By.id("myCheckbox."));

checkbox.click();

checkbox.clear();

checkbox.isSelected();

checkbox.isEnabled();

1.5.5按钮(button)

找到按钮元素:

WebElement saveButton = driver.findElement(By.id("save"));

点击按钮:

saveButton.click();

判断按钮是否enable:

 

saveButton.isEnabled ();

1.5.6左右选择框

也就是左边是可供选择项,选择后移动到右边的框中,反之亦然。例如:

Select lang = new Select(driver.findElement(By.id("languages")));

lang.selectByVisibleText(“English”);

WebElement addLanguage =driver.findElement(By.id("addButton"));

addLanguage.click();

1.5.7弹出对话框(Popup dialogs)

Alert alert = driver.switchTo().alert();

alert.accept();

alert.dismiss();

alert.getText();

1.5.8表单(Form)

Form中的元素的操作和其它的元素操作一样,对元素操作完成后对表单的提交可以:

WebElement approve = driver.findElement(By.id("approve"));

approve.click();

或

approve.submit();//只适合于表单的提交

1.5.9上传文件

上传文件的元素操作:

WebElement adFileUpload =driver.findElement(By.id("WAP-upload"));

String filePath = "C:\test\\uploadfile\\media_ads\\test.jpg";

adFileUpload.sendKeys(filePath);

1.6  Windows 和 Frames之间的切换

一般来说,登录后建议是先:

driver.switchTo().defaultContent();

切换到某个frame:

driver.switchTo().frame("leftFrame");

从一个frame切换到另一个frame:

driver.switchTo().frame("mainFrame");

切换到某个window:

driver.switchTo().window("windowName");

 

1.7  调用Java Script

Web driver对Java Script的调用是通过JavascriptExecutor来实现的,例如:

JavascriptExecutor js = (JavascriptExecutor) driver;

        js.executeScript("(function(){inventoryGridMgr.setTableFieldValue('"+ inventoryId + "','" + fieldName + "','"

                + value + "');})()");

1.8  页面等待

页面的操作比较慢,通常需要等待一段时间,页面元素才出现,但webdriver没有提供现成的方法,需要自己写。

等一段时间再对页面元素进行操作:

    public void waitForPageToLoad(longtime) {

        try {

            Thread.sleep(time);

        } catch (Exceptione) {

        }

    }

在找WebElement的时候等待:

   public WebElementwaitFindElement(By by) {

        returnwaitFindElement(by, Long.parseLong(CommonConstant.GUI_FIND_ELEMENT_TIMEOUT),Long

                .parseLong(CommonConstant.GUI_FIND_ELEMENT_INTERVAL));

    }

 

    public WebElementwaitFindElement(By by, long timeout, long interval) {

        long start = System.currentTimeMillis();

        while (true) {

            try {

                return driver.findElement(by);

            } catch(NoSuchElementException nse) {

                if (System.currentTimeMillis()- start >= timeout) {

                    throw newError("Timeout reached and element[" + by + "]not found");

                } else {

                    try {

                        synchronized(this) {

                           wait(interval);

                        }

                    } catch(InterruptedException e) {

                        e.printStackTrace();

                    }

                }

            }

        }

    }

 

1.9  在selenium2.0中使用selenium1.0的API

Selenium2.0中使用WeDriver API对页面进行操作,它最大的优点是不需要安装一个selenium server就可以运行,但是对页面进行操作不如selenium1.0的Selenium RC API那么方便。Selenium2.0提供了使用Selenium RC API的方法:

// You may use any WebDriver implementation. Firefox is used hereas an example

WebDriver driver = new FirefoxDriver();

 

// A "base url", used by selenium to resolve relativeURLs

 String baseUrl ="http://www.google.com";

 

// Create the Selenium implementation

Selenium selenium = new WebDriverBackedSelenium(driver, baseUrl);

 

// Perform actions with selenium

selenium.open("http://www.google.com");

selenium.type("name=q", "cheese");

selenium.click("name=btnG");

 

// Get the underlying WebDriver implementation back. This willrefer to the

// same WebDriver instance as the "driver" variableabove.

WebDriver driverInstance = ((WebDriverBackedSelenium)selenium).getUnderlyingWebDriver();

 

    //Finally, close thebrowser. Call stop on the WebDriverBackedSelenium instance

    //instead of callingdriver.quit(). Otherwise, the JVM will continue running after

    //the browser has beenclosed.

    selenium.stop();

 

我分别使用WebDriver API和SeleniumRC API写了一个Login的脚本,很明显,后者的操作更加简单明了。

WebDriver API写的Login脚本:

    public void login() {

        driver.switchTo().defaultContent();

        driver.switchTo().frame("mainFrame");

 

        WebElement eUsername= waitFindElement(By.id("username"));

        eUsername.sendKeys(manager@ericsson.com);

 

        WebElement ePassword= waitFindElement(By.id("password"));

        ePassword.sendKeys(manager);

 

        WebElementeLoginButton = waitFindElement(By.id("loginButton"));

       eLoginButton.click();

 

    }

   

SeleniumRC API写的Login脚本:

    public void login() {

        selenium.selectFrame("relative=top");

        selenium.selectFrame("mainFrame");

        selenium.type("username","manager@ericsson.com");

        selenium.type("password","manager");

        selenium.click("loginButton");

}

Selenium WebDriver:自动化网页交互的利器 在当今快速发展的Web开发领域,自动化测试已经成为确保应用程序质量和用户体验的重要手段。Selenium WebDriver,作为Selenium工具包中的核心组件,正是这一领域的佼佼者。本文将详细介绍Selenium WebDriver是什么,以及它解决了哪些问题。 阅读详情

相关推荐

用python玩转selenium:2-入门实例及分析

selenium2入门 上篇-用python玩转selenium:1-准备环境已经介绍了selenium-python环境配置,或者说安装的python已经集成了selenium模块,现在我们就可以开始编写第一个脚本。 #coding = utf-8 from selenium import webdriver from selenium.webdriver.common.keys imp

Reiki的专栏 5万+

Python使用Selenium WebDriver的入门介绍及安装教程

WebDriver 以本地化方式驱动浏览器,就像用户在本地或使用 Selenium 服务器的远程机器上所做的那样,这标志着浏览器自动化的飞跃。Selenium WebDriver 指的是语言绑定和各个浏览器控制代码的实现。这通常被称为 WebDriver。Selenium WebDriver 是 W3C 推荐标准。WebDriver 被设计成一个简单和简洁的编程接口。WebDriver 是一个简洁的面向对象 API。它能有效地驱动浏览器。本文绝大部分内容,都可以从以下官方文档中找到。

hubing_hust的专栏 5万+

Web应用程序的自动测试工具WebDriver简介

Web应用程序的自动测试工具WebDriver简介

u013558123的博客 2645

Selenium:WebDriver简介及元素定位

1、关于WebDriver 设计模式:按照Server-Client的经典设计模式设计; Server端:即Remote Server(远程服务器),可以是任意的浏览器,当脚本启动浏览器时,该浏览器就是Remote Server,它的职责是等待Client发送请求并做出响应; Client端:简单来说就是我们的测试代码,测试代码中的一些行为是以HTTP请求的方式发送给被测试浏览器——Remote Server,Remote Server接受请求,执行相应操作, 并在Response中返回执行状态、返

weixin_47648853的博客 7425

在Unity中为Sentis部署的YOLOv8模型集成NMS层并实现移动端性能优化

本文详细讲解了在Unity中利用Sentis部署YOLOv8模型时,如何通过代码动态集成NMS层以解决移动端性能瓶颈。文章核心在于避免导出时绑定NMS,转而使用Sentis原生API在运行时高效构建NMS处理流程,并分享了关键的GPU数据操作与移动端性能优化技巧,确保模型在移动设备上流畅运行。

p1q2r的博客 1093

微动探测原理及仪器介绍

微动探测原理及仪器介绍 1、微动探测原理 1.1 基本理论 微动是由体波和面波组成,其中微动能量的百分之七十以上都来自于面波,并且它与体波的主要区别是在不均匀的介质中传播时面波会发生频散,而体波不存在频散现象,因此面波是微动探测的主要对象。 对于介质的弹性参数(如横波速度、层薄厚、压缩波速度、密度等),面波传播速度相对比较敏感,特别是对横波的敏感性很高,因此可以利用面波来反演横波速度。 在时间和空间上,微动信号具有以下特性:高度变化、无规律性、无重复性等,有研究发现全世界各处记录的微动信号都有相似

zw461450141的博客 1万+

selenium 入门_Selenium2入门

存档日期:2019年4月18日 | 首次发布:2012年3月6日 Selenium是用于功能测试的著名的Web应用程序测试框架。 新版本Selenium 2融合了Selenium 1和WebDriver(与Selenium并行的项目)的最佳功能。 在本文中,将学习如何轻松地从Selenium 1过渡到Selenium2。示例展示了如何使用Selenium 2,如何进行远程测试以及如何将书面...

cuyi7076的博客 124

kali2020.2安装出现的问题并附详细解决办法

kali2020.2的安装

weixin_48776804的博客 3048

Selenium2的入门学习

最近由于项目的需求进行了Selenium2的资料查找和学习,原本Selenium2是自动化测试组件,是搞测试用的,如今被俺们用来进行信息爬取。根本的原因在于普通的网页格式html静态的,不包含js和Ajax的,是可以通过httpclient,jsoup等java包进行网页的爬取和解析,但是遇到Ajax动态请求,和执行js的网页来说,爬取下来的也只能是head body之类的标签了。 因此,不知是

A_Abg的专栏 689

保姆级教程:用ROS2 Humble和激光雷达,5分钟搞定机器人避障(附Python代码)

本文提供了一份详细的ROS2 Humble激光雷达避障实战指南,帮助开发者快速实现机器人避障功能。通过环境配置、硬件连接和Python代码实现,5分钟内即可让机器人自主避开障碍物。文章还涵盖了参数调优、常见问题排查及进阶优化技巧,适合机器人开发初学者和进阶用户。

weixin_42528902的博客 342

从零开始:用RFSOC XCZU47DR搭建软件无线电开发环境(2023最新版)

本文详细介绍了如何使用Xilinx RFSoC XCZU47DR搭建高性能软件无线电(SDR)开发环境,涵盖硬件选型、开发环境配置、射频子系统校准及实战应用开发。特别针对2023年最新技术需求,提供从基础配置到高级优化的完整指南,助力科研人员和工程师快速掌握RFSoC开发技术。

weixin_42525005的博客 512

Selenium 2入门

简介 Selenium 是用于测试 Web 应用程序用户界面 (UI) 的常用框架。它是一款用于运行端到端功能测试的超强工具。您可以使用多个编程语言编写测试,并且 Selenium 能够在一个或多个浏览器中执行这些测试。 Selenium(以下简称为 Selenium 1)并不是能够在浏览器中自动化功能测试的惟一工具。由 Simon Stewart(来自 Google)创建的 WebDrive

jiguanghoverli的专栏 1676

ADBC 全面解析:ABAP 开发者玩转 Native SQL 的实战指南

本文介绍了 SAP ABAP 中的 ADBC(ABAP Database Connectivity)技术,它是一种基于 ABAP 面向对象的类库,用于访问 Native SQL 接口。与 Open SQL 和 EXEC SQL 相比,ADBC 具有以下优势:支持特定数据库语法、可访问二级数据库连接、执行多种 SQL 操作且语法更 ABAP 化。文章通过示例展示了 ADBC 的基本用法,包括创建语句对象、执行查询和处理结果集。建议在需要数据库特有功能或二级连接时优先使用 ADBC,同时提供封装类来简化调用。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 306

Selenium 2 入门

简介 Selenium 是用于测试 Web 应用程序用户界面 (UI) 的常用框架。它是一款用于运行端到端功能测试的超强工具。您可以使用多个编程语言编写测试,并且 Selenium 能够在一个或多个浏览器中执行这些测试。 Selenium(以下简称为 Selenium 1)并不是能够在浏览器中自动化功能测试的惟一工具。由 Simon Stewart(来自 Google)创建的 WebD

mark's technic world 696

组合预测模型 | LSTM-XGBoost长短期记忆神经网络结合极限梯度提升树时间序列预测(Matlab程序)

组合预测模型 | LSTM-XGBoost长短期记忆神经网络结合极限梯度提升树时间序列预测(Matlab完整程序)

前程算法屋的博客 2180

部署OpenClaw(ClawdBot、MoltBot)后访问localhost:18789报1008错误怎么办?

部署openclaw(曾用名ClawdBot、MoltBot)后访问localhost:18789出现1008授权错误❌?本文分享如何快速解决这个问题✅

XiaoqiangClub的博客 1万+

web自动化-selenium2入门讲解(mac版本)

最近要做一个selenium2的分享,于是总结了下我用selenium2的感受,希望分享出来,可以对入门的小伙伴有一点帮助,也希望得到大佬的指教 一,环境搭建maven+selenium2+testng Maven管理jar包 Testng管理测试用例 Selenium通过webdriver驱动浏览器 Chromedriver下载地址:https://chromedriver.st...

weixin_30375427的博客 133

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Selenium2 WebDriver入门

http://selenium-release.storage.googleapis.com/index.html

八白龙的专栏 1534

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Selenium2(webdirver)入门之五测试工程同步(Java版)

目的: 使用svn同步所有测试代码,方便代码共享 前提: 1.已安装maven(eclipse)自带,用户自动化下载jar,配置工程,可以右击看看能否建立maven工程,如果eclipse没有maven功能,点击Help -> Eclipse Marketplace,搜索maven安装 2.安装svn(有的eclispe版本自带,有的没有,用于代码同步),点击Window -> Show

yaommy的博客 480

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

selenium2.0 入门

1.1  下载selenium2.0的lib包 http://code.google.com/p/selenium/downloads/list 官方User Guide:http://seleniumhq.org/docs/ 1.2  用webdriver打开一个浏览器 我们常用的浏览器有firefox和IE两种,firefox是selenium支持得比较成熟的浏览器。但是做页面的测...

0与1的世界 204

Selenium2.0 WebDriver入门指南

1.1下载selenium2.0的lib包 http://code.google.com/p/selenium/downloads/list 官方User Guide:http://seleniumhq.org/docs/ 1.2用webdriver打开一个浏览器 我们常用的浏...

chengqinjian6893的博客 181

Selenium入门之基础案例-2

1、登录163邮箱,模拟用户自动发送邮件 from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait # 等待页面加载某些元素 from selenium.webdriver.support import expected_conditions as EC from sele...

338

RobotFramework+Selenium2的入门与提高

###吴穹Robot Framework+Selenium2/WebDriver内容摘要### 一.基本概念 二.安装 三.创建测试用例       1.创建测试项目       2.创建测试套       3.创建测试用例       4.添加测试库       5.添加资源       6.增加自定义关键词       7.在测试用例里面引用资源       8.引用自定

心系旭阳 1475

selenium2入门

[url]http://code.google.com/p/selenium/[/url]是开源的自动化测试框架,支撑主流的所有的游览器,支持多语言开发, 要使用selenium2的pom依赖如下 [code="xml"] org.seleniumhq.selenium selenium-chrome-driver ...

yangzx 143

2.selenium入门

  2.1.简单用法   如果你已经安装了Selenium Python绑定,你可以像这样从Python开始使用它。 from selenium import webdriver from selenium.webdriver.common.keys import Keys driver = webdriver.Firefox() driver.get("http://www.pyth...

gaimechen的博客 253
上一篇: Eclipse External Tools --变量设置
下一篇: 关于Selenium 使用CSS定位的好教程
cyf0110
博客等级 码龄15年 3粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值