如何在selenium中使用js实现定位
学习selenium的时候经常用扫的定位方式WebDriver定位方式,但是一些Windows的窗口就无力了,这时候可以用js定位
使用js定位的时候是用DOM树定位方式
eg:
document.getElementById("su");
这里就可以看出来,和浏览器中的console控制台的定位方式一样样的——果然知识都是相通的
接下来就是正题:
selenium中执行js脚本:
第一步首先强转成JavascriptExcetor:
JavaScriptExecutor js = (JavascriptExecutor) driver;
然后用此JavascriptExcetor对象调用js定位的方法
举例:
// 设置日期控件的读写属性 ((JavascriptExecutor) driver).executeScript("document.getElementById(\"fromDate\").readOnly=false"); // 直接为日期控件强行赋值 JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript("document.getElementById('fromDate').setAttribute('value','2013-06-21');"); // 富文本编辑框的处理 driver.switchTo().frame("ueditor_0"); JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript("document.body.innerHTML='ABCDEFG'"); //js模拟点击 JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript("arguments[0].click();",driver.findElement(By.id("su"))); //滚动条操作 JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript("document.documentElement.scrollTop=1500"); //元素赋值 document.getElementById('HD_CheckIn').value='zhangsan'; //日期类型元素赋值 JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript("arguments[0] .value=‘2016-04-20';",driver.findElement(By*****)));
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容
1.引言 在Python网络爬虫内容提取器一文我们详细讲解了核心部件:可插拔的内容提取器类gsExtractor.本文记录了确定gsExtractor的技术路线过程中所做的编程实验.这是第二部分,第一部分实验了用xslt方式一次性提取静态网页内容并转换成xml格式.留下了一个问题:javascript管理的动态内容怎样提取?那么本文就回答这个问题. 2.提取动态内容的技术部件 在上一篇python使用xslt提取网页数据中,要提取的内容是直接从网页的source code里拿到的.但是一些Aja
-
C#使用Selenium+PhantomJS抓取数据
手头项目需要抓取一个用js渲染出来的网站中的数据.使用常用的httpclient抓回来的页面是没有数据.上网百度了一下,大家推荐的方案是使用PhantomJS.PhantomJS是一个没有界面的webkit浏览器,能够和浏览器效果一致的使用js渲染页面.Selenium是一个web测试框架.使用Selenium来操作PhantomJS绝配.但是网上的例子多是Python的.无奈,下载了python按照教程搞了一下,卡在了Selenium的导入问题上.遂放弃,还是用自己惯用的c#吧,就不信c#上没
-
selenium在执行phantomjs的API并获取执行结果的方法
前言 因为最近要写一个抓取sitemap和相应的参数的小脚本,现有的爬虫无论用什么语言写的,几乎都无法抓取参数,所以我思考了一下,先做一个简单的总结. 本来以为写个这种sitemap的爬虫很简单,经过思考之后才发现其中的可怕之处,最关键的是参数的提取,这个太麻烦了...这个时候才发现AWVS的无敌和强大之处... 如果我们要获取网站的sitemap同时还要抓取对应链接的参数,我大概总结了url的几个来源: 1.页面上直接现有的form表单以及现有的href等指向的链接及参数,这个相对比较简单,不
-
Python爬虫图片懒加载技术 selenium和PhantomJS解析
一.什么是图片懒加载? - 案例分析:抓取站长素材http://sc.chinaz.com/中的图片数据 #!/usr/bin/env python # -*- coding:utf-8 -*- import requests from lxml import etree if __name__ == "__main__": url = 'http://sc.chinaz.com/tupian/gudianmeinvtupian.html' headers = { 'User-Agen
-
python爬虫selenium和phantomJs使用方法解析
1.selenum:三方库.可以实现让浏览器完成自动化的操作. 2.环境搭建 2.1 安装: pip install selenium 2.2 获取浏览器的驱动程序 下载地址: http://chromedriver.storage.googleapis.com/index.html http://npm.taobao.org/mirrors/chromedriver/ 浏览器版本和驱动版本的对应关系表: chromedriver版本 支持的Chrome版本 v2.46 v71-73 v2.45
-
selenium设置proxy、headers的方法(phantomjs、Chrome、Firefox)
本文介绍了selenium设置proxy.headers的方法,把phantomjs.Chrome.Firefox几个浏览器的设置方法都总结一下,分享给大家,也给自己留个笔记 phantomjs 设置ip 方法1: service_args = [ '--proxy=%s' % ip_html, # 代理 IP:prot (eg:192.168.0.28:808) '--proxy-type=http', # 代理类型:http/https '--load-images=no', # 关闭图片加
-
Selenium执行Javascript脚本参数及返回值过程详解
在Selenium中可以使用drvier.execute_script()来执行Javascript脚本,支持多行语句. 使用Javascript可以实现以下功能: 移除元素隐藏.禁用.只读等限制属性 为元素添加id或高亮样式 页面滚动 富文本框输入(HTML注入) 获取页面信息 使用Javascript参数 在使用Javascript语句时,还可以动态传入参数或元素对象,Javascript语句中使用占位符"argument[n]"来表示取第几个参数,如: js = "ar
-
详解Selenium+PhantomJS+python简单实现爬虫的功能
Selenium 一.简介 selenium是一个用于Web应用自动化程序测试的工具,测试直接运行在浏览器中,就像真正的用户在操作一样 selenium2支持通过驱动真实浏览器(FirfoxDriver,IternetExplorerDriver,OperaDriver,ChromeDriver) selenium2支持通过驱动无界面浏览器(HtmlUnit,PhantomJs) 二.安装 Windows 第一种方法是:下载源码安装,下载地址(https://pypi.python.org/py
-
如何在selenium中使用js实现定位
学习selenium的时候经常用扫的定位方式WebDriver定位方式,但是一些Windows的窗口就无力了,这时候可以用js定位 使用js定位的时候是用DOM树定位方式 eg: document.getElementById("su"); 这里就可以看出来,和浏览器中的console控制台的定位方式一样样的--果然知识都是相通的 接下来就是正题: selenium中执行js脚本: 第一步首先强转成JavascriptExcetor: JavaScriptExecutor js = (
-
如何在UpdatePanel中调用JS客户端脚本
页面中加入了UpdatePanel后,Response.Write("<script>function dis (){alert('这是调用写在server的JS');}</script>")来调用客户端脚本,无任何提示的无反应.如何在UpdatePanel中调用JS客户端脚本呢? 方法:采用 ScriptManager.RegisterStartupScript(Control controlId,Type this.GetType(),String key,
-
在C#程序中对MessageBox进行定位的方法
在 C# 中没有提供方法用来对 MessageBox 进行定位,但是通过 C++ 你可以查找窗口并移动它们,本文讲述如何在 C# 中对 MessageBox 进行定位. 首先需在代码上引入所需名字空间: using System.Runtime.InteropServices; using System.Threading; 在你的 Form 类里添加如下 DllImport 属性: [DllImport("user32.dll")] static extern IntPtr Find
-
如何在vue中使用ts的示例代码
本文介绍了如何在vue中使用ts的示例代码,分享给大家,具体如下: 注意:此文并不是把vue改为全部替换为ts,而是可以在原来的项目中植入ts文件,目前只是实践阶段,向ts转化过程中的过渡. ts有什么用? 类型检查.直接编译到原生js.引入新的语法糖 为什么用ts? TypeScript的设计目的应该是解决JavaScript的"痛点":弱类型和没有命名空间,导致很难模块化,不适合开发大型程序.另外它还提供了一些语法糖来帮助大家更方便地实践面向对象的编程. typescript不仅可
-
如何在scrapy中集成selenium爬取网页的方法
1.背景 我们在爬取网页时一般会使用到三个爬虫库:requests,scrapy,selenium.requests一般用于小型爬虫,scrapy用于构建大的爬虫项目,而selenium主要用来应付负责的页面(复杂js渲染的页面,请求非常难构造,或者构造方式经常变化). 在我们面对大型爬虫项目时,肯定会优选scrapy框架来开发,但是在解析复杂JS渲染的页面时,又很麻烦. 尽管使用selenium浏览器渲染来抓取这样的页面很方便,这种方式下,我们不需要关心页面后台发生了怎样的请求,也不需要分析整
-
详解Selenium中元素定位方式
目录 八大元素定位方式 通过元素 id 定位 通过元素 name 定位 通过元素 class name 定位 通过 link text 与 partial link text 定位 通过 css selector 选择器定位 通过 Xpath 定位 通过 tag_name 定位 测试对象的定位和操作是我们利用 selenium 编写自动化脚本和 webdriver 的核心内容,其中 “操作” 这一部分又是建立在 “selenium” 元素定位的基础之上的.所以对元素对象的定位就显得越发的重要,接
-
如何在wxml中直接写js代码(wxs)
这篇文章主要介绍了如何在wxml中直接写js代码(wxs),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 我们在h5开发中,很多时候要在html中写到js代码,这个很容易实现.但是在微信小程序开发中,是不能直接在wxml中写js代码的,因此就有了wxs.在wxml中用wxs代码,有以下几种方式(在小程序文档中写的很清楚,我只不过是总结下) 第一种:直接在wxml文件中使用<wxs>标签 <wxs module="dateMod
-
如何在vue中使用video.js播放m3u8格式的视频
@[toc] 注意: "vue": "^2.6.11", "video.js": "^7.10.2", "videojs-contrib-hls": "^5.15.0", "mux.js": "^5.7.0" 一.安装 yarn add video.js yarn add videojs-contrib-hls // 这是播放hls流需要的插件 y
-
一文详解如何在IDEA中配置Node.js
目录 一.下载Node.js 二.安装Node.js 三.配置Node.js 四.测试Node.js 总结 一.下载Node.js 官网下载链接:Node.js 或者点击这里下载 点击下图红色标注区域,即可下载msi文件 二.安装Node.js 打开msi文件 一路点击“Next”(建议自定义文件安装路径) 安装完成 三.配置Node.js 打开IDEA 如下图,进入设置 在语言和框架中找到Node.js 选择节点解释器(在安装的Node.js里找到相应的node.exe) 此时IDEA会自动
-
移除Selenium中window.navigator.webdriver值
有不少朋友在开发爬虫的过程中喜欢使用Selenium + Chromedriver,以为这样就能做到不被网站的反爬虫机制发现. 先不说淘宝这种基于用户行为的反爬虫策略,仅仅是一个普通的小网站,使用一行Javascript代码,就能轻轻松松识别你是否使用了Selenium + Chromedriver模拟浏览器. 我们来看一个例子. 使用下面这一段代码启动Chrome窗口: 现在,在这个窗口中打开开发者工具,并定位到Console选项卡,如下图所示. from selenium.webdriver
随机推荐
- swift where与匹配模式的实例详解
- Android自定义View实现QQ运动积分转盘抽奖功能
- go的websocket实现原理与用法详解
- 局域网用户的限制和反限制设置方法与思路分析
- C#控制台程序使用Log4net日志组件详解
- JavaScript基本数据类型及值类型和引用类型
- jsp图片效果大全(图像震动效果、闪烁效果、自动切换图像)
- Android实现手机振动设置的方法
- nodejs密码加密中生成随机数的实例代码
- python轻松查到删除自己的微信好友
- jQuery控制div实现随滚动条滚动效果
- 基于C#中XmlReader读取Xml的深入分析
- jQuery操作checkbox选择(list/table)
- ajax的hide隐藏问题解决方法
- windows2003 shtml支持设置方法
- linux写shell需要注意的问题(必看)
- django使用xlwt导出excel文件实例代码
- Windows下的Jupyter Notebook 安装与自定义启动(图文详解)
- angular 实现的输入框数字千分位及保留几位小数点功能示例
- 详解Python字符串切片