6、元素操作

  1. 查找元素
  2.  
  3. 使用操作如何找到页面元素WebdriverfindElement方法可以用来找到页面的某个元素,最常用的方法是用idname查找。下面介绍几种比较常用的方法。
  4. By ID假设页面写成这样:
  5. <input type=”text name=”userName id=”user />
  6. 那么可以这样找到页面的元素:
  7. 通过id查找:
  8. WebElement element = driver.findElement(By.id(“user”));
  9. By Name或通过name查找:
  10. WebElement element = driver.findElement(By.name(“userName”));
  11. By XPATH或通过xpath查找:
  12. WebElement element =driver.findElement(By.xpath(“//input[@id='user']“));
  13. By Class Name假设页面写成这样:
  14.  
  15. <div class=”top”><span>Head</span></div><divclass=”top”><span>HeadName</span></div>
  16. 可以通过这样查找页面元素:
  17. List<WebElement>top= driver.findElements(By.className(“top”));
  18.  
  19. By Link Text假设页面元素写成这样:
  20. <a href=”http://www.baidu.com”>baidu</a>>
  21. 那么可以通过这样查找:
  22. WebElement baidu=driver.findElement(By.linkText(“baidu”));
  1. 输入框传值
  2.  
  3. 输入框(text field or textarea 找到输入框元素:
  4. WebElement element = driver.findElement(By.id(“passwd-id”));
  5. 在输入框中输入内容:
  6. element.sendKeys(“test”);
  7. 将输入框清空:
  8. element.clear();
  9. 获取输入框的文本内容:
  10. element.getText();
  11.  
  1. 下拉菜单
  2.  
  3. 下拉选择框(Select)找到下拉选择框的元素:
  4. Select select = new Select(driver.findElement(By.id(“select”)));
  5. 选择对应的选择项:select.selectByVisibleText(“testName”);

  6. select.selectByValue(“name”);
  7. 不选择对应的选择项:
  8. select.deselectAll();
  9. select.deselectByValue(“name”);
  10. select.deselectByVisibleText(“姓名”);
  11. 或者获取选择项的值:
  12. select.getAllSelectedOptions();
  13. select.getFirstSelectedOption();
  1. 单选框
  2.  
  3. 单选项(Radio Button)找到单选框元素:
  4. WebElement sex=driver.findElement(By.id(“sex”));
  5.  
  6. 选择某个单选项:
  7.  
  8. sex.click();
  9. 清空某个单选项:
  10. sex.clear();
  11.  
  12. 判断某个单选项是否已经被选择:
  13.  
  14. sex.isSelected();
  1. 复选框
  2.  
  3. 多选项(checkbox)多选项的操作和单选的差不多:
  4. WebElement area =driver.findElement(By.id(“area .”));
  5. area .click();
  6. area .clear();
  7. area .isSelected();
  8. area .isEnabled();
  1. 弹出框
  2.  
  3. 弹出对话框(Popup dialogs)Alert alert = driver.switchTo().alert();
  4. alert.accept();
  5. alert.dismiss();
  6. alert.getText();
  7.  
  1. 表单提交
  2.  
  3. 表单(Form)Form中的元素的操作和其它的元素操作一样,对元素操作完成后对表单的提交可以:
  4. WebElement sub= driver.findElement(By.id(“sub”));
  5. sub.click();

  6. sub.submit();//只适合于表单的提交
  1. 多窗口切换
  2.  
  3. Windows Frames之间的切换
  4.  
  5. 首先切换到默认的frame
  6. driver.switchTo().defaultContent();
  7. 切换到某个frame
  8. driver.switchTo().frame(“leftFrame”);
  9. 从一个frame切换到另一个frame
  10. driver.switchTo().frame(“mainFrame”);
  11. 切换到某个window
  12. driver.switchTo().window(“windowName”);

nodejs爬虫selenium的更多相关文章

  1. NodeJS 爬虫爬取LOL英雄联盟的英雄信息,批量下载英雄壁纸

    工欲善其事,必先利其器,会用各种模块非常重要. 1.模块使用 (1)superagent:Nodejs中的http请求库(每个语言都有无数个,java的okhttp,OC的afnetworking) ...

  2. [Python爬虫] Selenium实现自动登录163邮箱和Locating Elements介绍

    前三篇文章介绍了安装过程和通过Selenium实现访问Firefox浏览器并自动搜索"Eastmount"关键字及截图的功能.而这篇文章主要简单介绍如何实现自动登录163邮箱,同时 ...

  3. [Python爬虫] Selenium+Phantomjs动态获取CSDN下载资源信息和评论

    前面几篇文章介绍了Selenium.PhantomJS的基础知识及安装过程,这篇文章是一篇应用.通过Selenium调用Phantomjs获取CSDN下载资源的信息,最重要的是动态获取资源的评论,它是 ...

  4. [Python爬虫] Selenium获取百度百科旅游景点的InfoBox消息盒

    前面我讲述过如何通过BeautifulSoup获取维基百科的消息盒,同样可以通过Spider获取网站内容,最近学习了Selenium+Phantomjs后,准备利用它们获取百度百科的旅游景点消息盒(I ...

  5. Nodejs爬虫进阶教程之异步并发控制

    Nodejs爬虫进阶教程之异步并发控制 之前写了个现在看来很不完美的小爬虫,很多地方没有处理好,比如说在知乎点开一个问题的时候,它的所有回答并不是全部加载好了的,当你拉到回答的尾部时,点击加载更多,回 ...

  6. NodeJS爬虫系统初探

    NodeJS爬虫系统 NodeJS爬虫系统 0. 概论 爬虫是一种自动获取网页内容的程序.是搜索引擎的重要组成部分,因此搜索引擎优化很大程度上是针对爬虫而做出的优化. robots.txt是一个文本文 ...

  7. nodejs爬虫——汽车之家所有车型数据

    应用介绍 项目Github地址:https://github.com/iNuanfeng/node-spider/ nodejs爬虫,爬取汽车之家(http://www.autohome.com.cn ...

  8. nodejs爬虫笔记(三)---爬取YouTube网站上的视频信息

    思路:通过笔记(二)中代理的设置,已经可以对YouTube的信息进行爬取了,这几天想着爬取网站下的视频信息.通过分析YouTube,发现可以从订阅号入手,先选择几个订阅号,然后爬取订阅号里面的视频分类 ...

  9. nodejs爬虫笔记(二)---代理设置

    node爬虫代理设置 最近想爬取YouTube上面的视频信息,利用nodejs爬虫笔记(一)的方法,代码和错误如下 var request = require('request'); var chee ...

随机推荐

  1. 使用nginx cache缓存网站数据实践

    Nginx本身就有缓存功能,能够缓存静态对象,比如图片.CSS.JS等内容直接缓存到本地,下次访问相同对象时,直接从缓存即可,无需访问后端静态服务器以及存储存储服务器,可以替代squid功能. 1   ...

  2. 基于jQuery表格增加删除代码示例

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. C#中4种深拷贝方法介绍

    1:利用反射实现 public static T DeepCopy<T>(T obj) {   //如果是字符串或值类型则直接返回   if (obj is string || obj.G ...

  4. OpenCV学习笔记十三:opencv_videostab模块

    一,简介: 该库用于视频稳像.

  5. Linux之(Git)服务之windows配置

    设置你自己的昵称与email设置本地机器默认commit的昵称与Email. 请使用有意义的名字与email. git config --global user.name "syavingc ...

  6. org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [cn.facekee.cms.entity.CmsFansgroup#195]

    刚开始报错还是报的稀奇古怪的错误,让我纠结了好久,再三检查报错的位置,发现并没有错误,最后认真分析查看每行报错的信息才找到如题所述的错误!!!!! 报这种错误的原因可能是POJO映射文件中的字段和数据 ...

  7. mvc ajax给control传值问题

    jquery中的ajax操作给后台传值 $.ajax({ type: 'POST',   url: '<%=Url.Action("test","testIndex ...

  8. VS2008试用版到期解决办法----win7下VS2008升级补丁.zip

    打开好久没用的Visual studio 2008,才知道试用版已经到期了.在网上找来了序列号,可是连一个输入序列号的地方都没有,困惑了好久,终于找到了解决办法. 首先献上自己收集的Visual st ...

  9. node.js中的路由(url)初步

    1.建立n4_root.js var http = require('http'); var url = require('url'); //这是node.js中自带的var router = req ...

  10. caffe小问题汇总(持续更新)

    PS:所有问题均在caffe-windows下产生 1.为什么AlexNet中,InnerProduct_Layer(fc8)层的输出可以直接作为Accuracy_Layer层的输出? 答:首先,我们 ...