在使用selenium进行抓取url的时候,试图使用find_elements_by_xpath来获取. 因此想当然的直接使用XPATH的语法进行获取属性 事例缩略后xml结构如下 <div class="qg-limit-list" data-spm="1998564503" data-spm-max-idx> <a href="//item.taobao.com/item.htm?spm=a21bz.7725273.199856450…
HtmlAgilityPack介绍 HtmlAgilityPack是一个专门用来解析Html的库,它可以使用xml的方式来解析html. 有人说了,html本身不就是xml?是的,html就是xml,但是html很宽松,没有关闭的节点也可以用,还有一些其他的内容比如js夹杂在里面.如果直接使用xml解析库的话9成会报错的. 而HtmlAgilityPack会去处理这些问题,把Html转成一个接近标准的xml来供我们使用. 获取内容 网上关于HtmlAgilityPack的介绍其实很多,而且用法其…
1.WebElement webElemt= webElement.findElement(By.xpath("//*[@class='xxxxxx]/a")); //在ie下使用innerText 在火狐下使用textContent String linktext = webElemt.getAttribute("innerText"); 2.WebElement element = ...;//测试的好像不行. ((JavascriptExecutor) dri…
1. implicitly_wait()隐形等待.等待页面加载完成,作用是全局的. 时间可以设置的长,短时间也没有影响.直到设置的时间耗完 时间耗完也不会报错 2.获取title值 driver.title 3.获取元素属性值 t = driver.find_element_by_id("su").get_attribute("value") 4.判断元素是显示还是隐藏(返回布尔值) d = driver.find_element_by_id("su&qu…
编写环境主要分为三个部分: JUnit : java单元测试框架: Firebug: firefox 附加组件,Firebug是firefox下的一个扩展,能够调试所有网站语言,如Html,Css等,但FireBug最吸引人的就是javascript调试功能: XPath : firefox 附加组件 XPath: 下文大部分内容来自:http://www.cnblogs.com/jianjialin/archive/2009/02/01/1382056.html XPath 是XML的查询语言…
Selenium 获取 JavaScript 返回值非常简单,只需要在 js 脚本中将需要返回的数据 return 就可以,然后通过方法返回 js 的执行结果,方法源码如下所示: /** * Get Object of return from js * * @author Aaron.ffp * @version V1.0.0: autoSeleniumDemo main.aaron.sele.core SeleniumCore.java execJSR, 2015-8-9 1:39:17 Ex…
通过 JS 或 JQuery 获取到元素后,通过 offsetLeft.offsetTop.offsetWidth.offsetHeight 即可获得元素的位置和大小,非常的简单,直接上源码了,敬请参阅! /** * Get element position by jquery, and return integer Array [left distance, top distance, width distance, height distance] * * @author Aaron.ffp…
以下代码在 python 3.5 + jupyter notebook 中运行测试无误! # 我们爬取网页的目的,无非是先定位到DOM树的节点,然后取其文本或属性值 myPage = '''<html> <title>TITLE</title> <body> <h1>我的博客</h1> <div>我的文章</div> <div id="photos"> <img src=&…
Python+selenium之获取文本值和下拉框选择数据 一.结合实例进行描述 1. 实例如下所示: #新增标签操作 def func_labels(self): self.driver.find_element_by_xpath("//*[@class='menu-text'][text()='业务管理']").click() time.sleep(1) self.driver.find_element_by_xpath("//*[@class='menu-text'][…
xml实例: 版本一: <?xml version="1.0" encoding="UTF-8"?><country name="chain"><provinces><heilongjiang name="citys"><haerbin/><daqing/></heilongjiang><guangdong name="city…
selenium常用的类库.对应的方法和属性…
selenium 辅助工具 splinter 总有人看不明白,以防万一,先在开头大写加粗说明一下: frameset不用切,frame需层层切! 很多人在用selenium定位页面元素的时候会遇到定位不到的问题,明明元素就在那儿,用firebug也可以看到,就是定位不到,这种情况很有可能是frame在搞鬼(原因之一,改天专门说说定位不到元素,可能的一些原因及处理办法). frame标签有frameset.frame.iframe三种,frameset跟其他普通标签没有区别,不会影响到正常的定位,…
[环境] Python3.6+selenium3.0.2+FireFox50+win7 [定位方法] 1.方法:find_element_by_xpath('') 说明:xpath定位方法有相对路径和绝对路径之分,当元素层级较多时,绝对路径会很长: 相对路径具有布尔逻辑运算. 缺点: 1)性能差,定位元素的性能比其他方式差: 2)稳定性差,Xpath会随着页面布局元素的改变而改变: 3)兼容性不好,在不同浏览器下Xpath的实现是不一样的. [示例] import unittest from s…
本机环境:xamppv3.2.1+ecshop3.0  1.元素定位写对,却一直报错,发现是页面元素加载的太慢,所以加上延时 from selenium import webdriverimport timedriver=webdriver.Chrome()driver.implicitly_wait(10) #自动延时10sdriver.get("http://localhost/ecshop")# driver.find_element_by_xpath('//div[@class…
 ---------------------------------------------------------------------------------踩坑过程:①webapi的某action参数中,其中一个参数无意中使用了 "nodeName "这个名字.   ②swagger前台调用该接口的时候,前台报JS异常错误,始终不好,如下. ---------------------------------------------------------------------…
前几天来一需求,实现过程中需要修改一个底层的查询接口,具体修改就是在where中添加一个条件,由于这个底层SQL使用的地方太多,所以就想着是用if加一标识符做个判断,传一个只有我会使用的参数,然后动态加上需要拼接的where条件,第一次写法如下: <if test="isSendState == '1' "> and (RLT_STS_CD IN ('21','1','26')) </if> 这里的isSendState就是我加的标识符,这个标识符我加了,但是条…
1)Maven TestNG什么的都配置好了,在本地用eclipse->Run AS->MAVEN INSTALL运行正常 2) Jenkins安装了插件,也建立了MAVEN项目.MAVEN项目里面也设置好了maven的pom.xml文件的路径. 3) Jenkins->Global Tool Configuration里面JAVA_HOME和MAVEN_HOME都配置正确. 4)创建构建,build所建立的maven项目,出现Could not find or load main cl…
1053 Path of Equal Weight (30 分)   Given a non-empty tree with root R, and with weight W​i​​ assigned to each tree node T​i​​. The weight of a path from R to L is defined to be the sum of the weights of all the nodes along the path from R to any leaf…
这次要说的自动化坑是关于<a>标签的,话不多说,先上图: 这个表面上看起来是个输入框,操作的时候需要鼠标先悬停,才会出来下面的选项,刚开始我尝试直接点击,结果当然是失败的了. 注意:我的操作步骤,先悬停,ok,那先用鼠标悬停,这一步没问题,下一步,是点击?还是用键盘下键?还是键盘回车? 我基本都尝试了,键盘先下键再回车不行,在下键的时候,选择的下拉框有问题,直接点击不行,元素根本获取不到, 接下来请注意我的截图,<a>标签下面有个<ul>,咦,这里是什么呢?点开看看,哇…
今天要讲的坑是....输入框有请求的. 问题是这样的,我们公司的业务有些输入框选项是联想的,这些联想都会发送请求,怎么办呢? 先 正常输入,然后强制等待几秒,最好多等会,谁知道第三方会不会有问题,这里用显示等待也是没有效果的 等待之后可以结合键盘,比如上键下键和回车键.…
一天一坑系列(3) 今天不讲我是怎么定位了吧,今天讲的是关于弹窗的. 基于业务,一键全否之后需要二次确认,会弹出提示框,你会不会认为这是alert弹框?经过仔细查看元素,确认不是弹框,明明是div嘛,那有ifname吗?也没有 那怎么处理?我尝试了swith_to_alert,提示没有alert;尝试获取句柄,只有一个句柄:尝试聚焦,提示我元素不存在,为什么会提示不存在呢? //*[@id="global-alert-152402287256991-confirm"] 元素如这个,就是…
UI自动化,一天一坑系列(2) 今天要介绍的坑是这样的:在使用google浏览器的过程中,F12查看页面元素,我的操作步骤是先F12,然后点击箭头,接着点击要查找的元素来实现元素查看,不知道你是不是这样定位的. 那么问题来了,在写代码的时候,这地方明明定位到了,提示Message: element not visible(错误原因:元素不可见)你怎么办,你怎么办?我曾经尝试了用Action鼠标点击,尝试用了元素聚焦,然并卵,No,脑细胞死了不知道多少,想了一天,还是没结果. 究极苦恼有木有,有木…
UI自动化,一天一坑系列(1) 不要试图自作聪明添加一些不必要的东西. 个人遇到的问题关于下拉框的,本来一个下拉框连续点击两次就好了,结果自己多余将谷歌的提示‘正在受到自动化控制’去掉了,导致原本很简单的问题搞了一天! 在UI自动化的过程中,尽量不要让浏览器静默执行,尽量不画蛇添足! 一天一坑,我还在坑里…
flash坑太多了,要确保能有效的使用ExternalInterface.call调用js的话,需要两个条件: 1.allowScriptAccess="always" 2.id="somename" // object tag name="somename" // embed tag 不加id的话 某些版本的浏览器(比如我的IE10)就会出问题,一直返回null. 原出处:http://blog.csdn.net/mokt2001/articl…
实例 1 基本的XPath语法类似于在一个文件系统中定位文件,如果路径以斜线 / 开始, 那么该路径就表示到一个元素的绝对路径 /AAA 选择根元素AAA       <AAA>           <BBB/>           <CCC/>           <BBB/>           <BBB/>           <DDD>                <BBB/>           </DD…
最近用xpath,刚开始有很多问题 用测试代码跑的时候经常获取不到值. 第一种情况: page= etree.parse('text.html') #text.html为一个html文件 <class 'lxml.etree._ElementTree'> page = etree.HTML(html) #heml为一个字符串<class 'lxml.etree._Element'> 一开始通过使用字符串进行解析,通过page.xpath()进行元素获取,找不到值,后面发现这个typ…
前几天写一个js的时候遇到一个非常诡异的事情,这个问题是这样的,我要获取一个页面的DOM元素的val值,判断这个值是否比某个变量大,这个需求原先数字最大也就是10,现在要改了,可能会更多,这个时候我发现比较大小的判断就出了问题: 代码粘出来: // js弱类型导致的诡异现象,11 > 9 false function downtest(id){// 现象是当val取到的元素val值是11的时候,11>9结果是false // 当前点击下一题的是第几题, var val=$("#&qu…
解决办法: normalize-space() 例子: 原来的xpath为: user=selector.xpath('//*[@id="Con"]/tr[1]/th/text()') 修改后: user=selector.xpath(' normalize-space( //*[@id="Con"]/tr[1]/th/text())') #注意位置…
在上篇文章里,介绍了如何在火狐浏览器中获取网页元素的xpath和css path. 这篇文章将介绍,在谷歌浏览器中使用SelectorGadget和Xpath Helper实现同样功能. 这两个谷歌浏览器的扩展程序截图如下: 使用方法如下: 打开一个网页,例如www.hao123.com; 开启SelectorGadget(点击一个放大镜图案的按钮即可); 移动鼠标箭头到一个页面元素上并单击,该页面元素会变成绿色,SelectorGadget的文本框内显示出被选中页面元素的css path类型的…
定位 //*[@id="kkpager"]/div[1]/span[1]/a[@title="下一页"] 获取元素 txt4 = txt.xpath('//*[@id="kkpager"]/div[1]/span[1]/a]') print(txt4[0].attrib.get('title')) 可以了…