Maven+selenium入门教程

一、环境搭建

官网需要下载selenium对应的jar包,谷歌浏览器及对应的驱动

官网下载地址:http://www.seleniumhq.org/download/

浏览器驱动:https://www.npmjs.com/package/selenium-webdriver

2、jdk环境变量

jdK下载地址:https://www.oracle.com/technetwork/java/javaee/downloads/index.html

环境变量配置参考:https://jingyan.baidu.com/article/6dad5075d1dc40a123e36ea3.html

3、maven中pom文件配置需要的jar包支持

如果是java Project,直接导入下载的jar包就行了

二、Selenium WebDriver运行原理

使用eclipse打开WebDriver.class文件会发现里面支持许多方法的调用

三、常见API用法

1.1打开浏览器

想要浏览器完成界面元素的操作,首页要通过WebDriver打开浏览器,WebDriver为上面下载的

System.setProperty("webdriver.chrome.driver", "C:\\Users\\Administrator\\AppData\\Local\\Google\\Chrome\\chromedriver.exe");

webdriver=new ChromeDriver();

/*设置隐私等待让浏览器正常运行*/

webdriver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);

打开firefox浏览器:

            WebDriver driver = new FirefoxDriver(); 

打开IE浏览器

            WebDriver driver = new InternetExplorerDriver ();

打开chrome浏览器

       WebDriverdriver = new ChromeDriver();

1.2.1  最大化浏览器

  WebDriver driver = new FirefoxDriver();

  driver.manage().window().maximize();

1.2.3 关闭浏览器

WebDriver driver = new FirefoxDriver();

  driver.close();

  driver.quit();

1.3  打开测试页面

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

1.4  页面元素定位

Webdriver提供下面两种方法来定位页面元素,参数是By对像,最常用是By.id和By.name查找。

findElement   定位某个元素,如果没有找到元素会抛出异常:NoSuchElementException

findElements     定位一组元素

 例如需要定位如下元素:

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

By.id:

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

By.name:

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

By.xpath:

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

By.className

      WebElement element = driver.findElement(By.className("input_class"));

By.cssSelector

      WebElement element = driver.findElement(By.cssSelector(".input_class"));

By.linkText:

      //通俗点就是精确查询

      WebDriver driver = new FirefoxDriver();

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

      WebElement element = driver.findElement(By.linkText("百科"));

By.partialLinkText:

      //这个方法就是模糊查询

      WebDriver driver = new FirefoxDriver();

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

      WebElement element = driver.findElement(By.partialLinkText("hao"));

By.tagName:

      WebDriver driver = new FirefoxDriver();

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

      String test= driver.findElement(By.tagName("form")).getAttribute("name");

      System.out.println(test); 

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(“A”);

select.selectByValue(“1”); 

select.deselectAll();

select.deselectByValue(“1”);

select.deselectByVisibleText(“A”);

select.getAllSelectedOptions();

select.getFirstSelectedOption(); 

1.5.3单选项(Radio Button)

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

radio.click();       //选择某个单选项

radio.clear();      //清空某个单选项

radio.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 btn= driver.findElement(By.id("save"));

btn.click();      //点击按钮

btn.isEnabled ();  //判断按钮是否enable

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截图保存图片文件

1.6  WindowHandle和 Frames之间的切换

例如从登陆页面跳转到index页面,此时WindowHandle就会发生变化,通过封装webdriverde的getWindowsHandle方法就可解决该问题

再就是Frames的切换,后台系统用的比较多

源码就是这样的,套两层frameset,里面放frame

<html>

<frameset rows="*" cols="150,*">

  <frame src="/example/html/frame_a.html" id="left">

  <frameset rows="50,*">

  <frame src="/example/html/frame_b.html" id="top">

  <frame src="/example/html/frame_c.html" id="main">

</frameset>

</frameset>

</html>

当进入到这个页面时,driver停留在最大的frameset上,如果需要操作left页面就需要使用

webdriver.switchTo().frame(left);

如果left页面操作完需要操作top或者main的页面时,需要先从frame返回到frameset再

到子frameset的frame中,思路如下

webdriver.switch_to_parent_frame();

webdriver.switchTo().frame(main);

从main返回到left时就需要

webdriver.switch_to_parent_frame();

webdriver.switch_to_parent_frame();

webdriver.switchTo().frame(main);

1.7  表格(Table)

先找到table,再找到对应列或者行,赋值给list,for循环取出值

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容