nodejs爬虫selenium
6、元素操作
- 查找元素
- 使用操作如何找到页面元素Webdriver的findElement方法可以用来找到页面的某个元素,最常用的方法是用id和name查找。下面介绍几种比较常用的方法。
- By ID假设页面写成这样:
- <input type=”text” name=”userName” id=”user” />
- 那么可以这样找到页面的元素:
- 通过id查找:
- WebElement element = driver.findElement(By.id(“user”));
- By Name或通过name查找:
- WebElement element = driver.findElement(By.name(“userName”));
- By XPATH或通过xpath查找:
- WebElement element =driver.findElement(By.xpath(“//input[@id='user']“));
- By Class Name假设页面写成这样:
- <div class=”top”><span>Head</span></div><divclass=”top”><span>HeadName</span></div>
- 可以通过这样查找页面元素:
- List<WebElement>top= driver.findElements(By.className(“top”));
- By Link Text假设页面元素写成这样:
- <a href=”http://www.baidu.com”>baidu</a>>
- 那么可以通过这样查找:
- WebElement baidu=driver.findElement(By.linkText(“baidu”));
- 输入框传值
- 输入框(text field or textarea) 找到输入框元素:
- WebElement element = driver.findElement(By.id(“passwd-id”));
- 在输入框中输入内容:
- element.sendKeys(“test”);
- 将输入框清空:
- element.clear();
- 获取输入框的文本内容:
- element.getText();
- 下拉菜单
- 下拉选择框(Select)找到下拉选择框的元素:
- Select select = new Select(driver.findElement(By.id(“select”)));
- 选择对应的选择项:select.selectByVisibleText(“testName”);
- 或
- select.selectByValue(“name”);
- 不选择对应的选择项:
- select.deselectAll();
- select.deselectByValue(“name”);
- select.deselectByVisibleText(“姓名”);
- 或者获取选择项的值:
- select.getAllSelectedOptions();
- select.getFirstSelectedOption();
- 单选框
- 单选项(Radio Button)找到单选框元素:
- WebElement sex=driver.findElement(By.id(“sex”));
- 选择某个单选项:
- sex.click();
- 清空某个单选项:
- sex.clear();
- 判断某个单选项是否已经被选择:
- sex.isSelected();
- 复选框
- 多选项(checkbox)多选项的操作和单选的差不多:
- WebElement area =driver.findElement(By.id(“area .”));
- area .click();
- area .clear();
- area .isSelected();
- area .isEnabled();
- 弹出框
- 弹出对话框(Popup dialogs)Alert alert = driver.switchTo().alert();
- alert.accept();
- alert.dismiss();
- alert.getText();
- 表单提交
- 表单(Form)Form中的元素的操作和其它的元素操作一样,对元素操作完成后对表单的提交可以:
- WebElement sub= driver.findElement(By.id(“sub”));
- sub.click();
- 或
- sub.submit();//只适合于表单的提交
- 多窗口切换
- Windows 或 Frames之间的切换
- 首先切换到默认的frame
- driver.switchTo().defaultContent();
- 切换到某个frame:
- driver.switchTo().frame(“leftFrame”);
- 从一个frame切换到另一个frame:
- driver.switchTo().frame(“mainFrame”);
- 切换到某个window:
- driver.switchTo().window(“windowName”);
nodejs爬虫selenium的更多相关文章
- NodeJS 爬虫爬取LOL英雄联盟的英雄信息,批量下载英雄壁纸
工欲善其事,必先利其器,会用各种模块非常重要. 1.模块使用 (1)superagent:Nodejs中的http请求库(每个语言都有无数个,java的okhttp,OC的afnetworking) ...
- [Python爬虫] Selenium实现自动登录163邮箱和Locating Elements介绍
前三篇文章介绍了安装过程和通过Selenium实现访问Firefox浏览器并自动搜索"Eastmount"关键字及截图的功能.而这篇文章主要简单介绍如何实现自动登录163邮箱,同时 ...
- [Python爬虫] Selenium+Phantomjs动态获取CSDN下载资源信息和评论
前面几篇文章介绍了Selenium.PhantomJS的基础知识及安装过程,这篇文章是一篇应用.通过Selenium调用Phantomjs获取CSDN下载资源的信息,最重要的是动态获取资源的评论,它是 ...
- [Python爬虫] Selenium获取百度百科旅游景点的InfoBox消息盒
前面我讲述过如何通过BeautifulSoup获取维基百科的消息盒,同样可以通过Spider获取网站内容,最近学习了Selenium+Phantomjs后,准备利用它们获取百度百科的旅游景点消息盒(I ...
- Nodejs爬虫进阶教程之异步并发控制
Nodejs爬虫进阶教程之异步并发控制 之前写了个现在看来很不完美的小爬虫,很多地方没有处理好,比如说在知乎点开一个问题的时候,它的所有回答并不是全部加载好了的,当你拉到回答的尾部时,点击加载更多,回 ...
- NodeJS爬虫系统初探
NodeJS爬虫系统 NodeJS爬虫系统 0. 概论 爬虫是一种自动获取网页内容的程序.是搜索引擎的重要组成部分,因此搜索引擎优化很大程度上是针对爬虫而做出的优化. robots.txt是一个文本文 ...
- nodejs爬虫——汽车之家所有车型数据
应用介绍 项目Github地址:https://github.com/iNuanfeng/node-spider/ nodejs爬虫,爬取汽车之家(http://www.autohome.com.cn ...
- nodejs爬虫笔记(三)---爬取YouTube网站上的视频信息
思路:通过笔记(二)中代理的设置,已经可以对YouTube的信息进行爬取了,这几天想着爬取网站下的视频信息.通过分析YouTube,发现可以从订阅号入手,先选择几个订阅号,然后爬取订阅号里面的视频分类 ...
- nodejs爬虫笔记(二)---代理设置
node爬虫代理设置 最近想爬取YouTube上面的视频信息,利用nodejs爬虫笔记(一)的方法,代码和错误如下 var request = require('request'); var chee ...
随机推荐
- 使用nginx cache缓存网站数据实践
Nginx本身就有缓存功能,能够缓存静态对象,比如图片.CSS.JS等内容直接缓存到本地,下次访问相同对象时,直接从缓存即可,无需访问后端静态服务器以及存储存储服务器,可以替代squid功能. 1 ...
- 基于jQuery表格增加删除代码示例
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- C#中4种深拷贝方法介绍
1:利用反射实现 public static T DeepCopy<T>(T obj) { //如果是字符串或值类型则直接返回 if (obj is string || obj.G ...
- OpenCV学习笔记十三:opencv_videostab模块
一,简介: 该库用于视频稳像.
- Linux之(Git)服务之windows配置
设置你自己的昵称与email设置本地机器默认commit的昵称与Email. 请使用有意义的名字与email. git config --global user.name "syavingc ...
- org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [cn.facekee.cms.entity.CmsFansgroup#195]
刚开始报错还是报的稀奇古怪的错误,让我纠结了好久,再三检查报错的位置,发现并没有错误,最后认真分析查看每行报错的信息才找到如题所述的错误!!!!! 报这种错误的原因可能是POJO映射文件中的字段和数据 ...
- mvc ajax给control传值问题
jquery中的ajax操作给后台传值 $.ajax({ type: 'POST', url: '<%=Url.Action("test","testIndex ...
- VS2008试用版到期解决办法----win7下VS2008升级补丁.zip
打开好久没用的Visual studio 2008,才知道试用版已经到期了.在网上找来了序列号,可是连一个输入序列号的地方都没有,困惑了好久,终于找到了解决办法. 首先献上自己收集的Visual st ...
- node.js中的路由(url)初步
1.建立n4_root.js var http = require('http'); var url = require('url'); //这是node.js中自带的var router = req ...
- caffe小问题汇总(持续更新)
PS:所有问题均在caffe-windows下产生 1.为什么AlexNet中,InnerProduct_Layer(fc8)层的输出可以直接作为Accuracy_Layer层的输出? 答:首先,我们 ...