Selenium入门教程

1)Selenium 简介

什么是Selenium?
  1. Selenium最初是由ThoughtWorks公司一个叫Jason R. Huggins的工程师和他的团队开发出来
  2. Selenium是仅针对Web系统的一款自动化测试工具
  3. Selenium是免费的、开源的,很多公司选择Selenium和它是免费的有很大关系 Selenium不是一个工具,它是一系列工具的总称
  4. Selenium支持多种编程语言 Selenium支持多种浏览器 Selenium可以运行在多个平台上
Selenium 3.0之后可以说主要包括两个工具:
  • Selenium IDE(火狐57之后的版本中不再支持)
  • Selenium RC(3.0之后基本也已经从Selenium核心的安装包中去除掉了)
  • Selenium Webdriver(Selenium 2.0 以后的核心,用于控制浏览器)
  • Selenium Grid(支持脚本在多台机器上并行执行脚本,提升执行效率)
使用Selenium做自动化测试是需要掌握一门语言的,Selenium支持很多编程语言:

Java C# PHP Python Perl Ruby

Selenium支持很多浏览器:
  • Internet Explorer
  • Microsoft Edge
  • Firefox
  • Google Chrome
  • Opera
  • HtmlUnit
Selenium也可以运行在很多操作系统上:

Windows/Mac/Linux

2)Selenium 环境搭建

  • 配置JDK环境
  • 下载Selenium关联的jar/使用maven配置 参考
  • 下载浏览器驱动
  • 远程执行的场合,下载并在远程机器上安装Selenium Server (Grid)

3)Selenium 使用

WebDriver 如何驱动浏览器的

Selenium-WebDriver 直接通过浏览器自动化的本地接口来调用浏览器。
如何直接调用,和调用的细节取决于你使用什么浏览器。本章后续的内容介绍了每个 “browser driver” 的详细信息。

WebDriver 和 Selenium-Server

你可能需要,也可能不需要 Selenium Server,取决于你打算如何使用 Selenium-WebDriver。
如果你仅仅需要使用 WebDriver API,那就不需要 Selenium-Server。
如果你所有的测试和浏览器都在一台机器上,那么你仅需要 WebDriver API。WebDriver 将直接操作浏览器。
在有些情况下,你需要使用 Selenium-Server 来配合 Selenium-WebDriver 工作,例如:
1)你使用 Selenium-Grid 来分发你的测试给多个机器或者虚拟机。
2)你希望连接一台远程的机器来测试一个特定的浏览器。
3)你没有使用 Java 绑定(例如 Python, C#, 或 Ruby),并且可能希望使用 HtmlUnit Driver。

WebDriver分类

1)RemoteWebDriver
2)浏览器对应driver

  • InternetExplorerDriver
  • EdgeDriver
  • FirefoxDriver
  • ChromeDriver
WebDriver使用

1)设置driver的环境变量,加载WebDriver实例
2)获取一个页面
driver.get(“http://www.google.com”);

3)查找 UI 元素(web 元素)
Byid

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

ByClassName

List<WebElement> cheeses = driver.findElements(By.className("cheese"));

ByTagName

WebElement frame = driver.findElement(By.tagName("iframe"));

ByName

WebElement cheese = driver.findElement(By.name("cheese"));

ByLinkText

WebElement cheese = driver.findElement(By.linkText("cheese"));

ByPartialLinkText

WebElement cheese = driver.findElement(By.partialLinkText("cheese"));

ByCSS

WebElement cheese = driver.findElement(By.cssSelector("#food span.dairy"));

ByXPATH

WebElement cheese = driver.findElement(By.xpath(xpath));

4)元素等待

inputBox = fluentWait(By.xpath(xpath));

5)选择(select)/取消选择
Select类

select_by_index(index)/deselect_by_index(index)
select_by_value(value)/deselect_by_value(value)
select_by_visible_text(text)/deselect_by_visible_text(text)

6)用户输入
SendKeys可以给element做输出,也可以作为动作快捷键,比如ctrl+c,ctrl +v ,alt,enter等

inputBox.sendKeys(text);

7)用户输入 - 填充表单
如果你已经完成表单填充,你可能希望提交它,你只要找到 “submit” 按钮然后点击它即可。

driver.findElement(By.id("submit")).click();

或者,你可以调用 WebDriver 为每个元素提供的 “submit” 方法。如果你对一个 form 元素调用该方法,WebDriver 将调用这个 form 的 submit 方法。如果这个元素不是一个 form,将抛出一个异常。

element.submit();

8)在窗口和帧(frames)之间切换

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

9)Cookies
在我们继续介绍更多内容之前,还有必要介绍一下如何操作 cookie。首先,你必须在 cookie 所在的域。如果你希望在加载一个大页面之前重设 cookie,你可以先访问站点中一个较小的页面,典型的是 404 页面
// 进到正确的域

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

// 设置 cookie,这个cookie 对整个域都有效

Cookie cookie = new Cookie("key", "value");
driver.manage().addCookie(cookie);

// 输出当前 url 所有可用的 cookie

Set<Cookie> allCookies = driver.manage().getCookies();
for (Cookie loadedCookie : allCookies) {
    System.out.println(String.format("%s -> %s", loadedCookie.getName(), loadedCookie.getValue()));
}

// 你可以通过3中方式删除 cookie
// By name
driver.manage().deleteCookieNamed("CookieName");
// By Cookie
driver.manage().deleteCookie(loadedCookie);
// Or all of them
driver.manage().deleteAllCookies();

10)拖拽
以下代码演示了如何使用 “Actions” 类来实现拖拽。浏览器本地方法必须要启用:

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

(new Actions(driver)).dragAndDrop(element, target).perform();

4)Selenium API官方文档

https://www.selenium.dev/selenium/docs/api/java/overview-summary.html
https://wizardforcel.gitbooks.io/selenium-doc/content/index.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值