作者:hacker发布时间:2022-09-22分类:网络黑客浏览:136评论:5
该selenium的学习我是根据java语言来进行的,所以很多语法都是根据java而来的。
很多时候我们都在与页面打交道,这样或多或少的应该对html代码有一点了解。html 也就是所说的超文本标记语言,利用一些标签的集合来搭建整个页面。
每一个标签都会有自己的属性,现在的对象定位也就是根据其中的属性进行获取的。
div id="header"
h1Main Title of Web Page/h1
/div
在很多页面中都包含id属性,如何获取由id定义的内容呢?
WebDriver dr=new FirefoxDriver();//这里使用的是火狐浏览器
dr.findElement(By.id("header"));这样就可以获取上面的div盒子了
以百度经验首页html代码为例:
a target="_blank" href=""手机/a
此代码显示的为一个链接,那么怎么获取该链接呢?
WebElement link=dr.findElement(By.linkText(“手机”));这里根据link标签名获取内容,并且返回的是一个类型为WebElement的元素
WebElement paLink=dr.findElement(By.partialLinkText(“link前几个字母”));此命令是根据标签的前几个字实现的匹配
很多页面都会使用css进行页面的控制,那么怎么使用css进行获取页面内容呢?
WebElement d=dr.findElement(By.cssSelector(“css名称”))
有的页面中获取不了以上的特殊信息的时候,可以根据xpath获取唯一的控件标识
dr.findElement(By.xpath(“xpath”)).click();//click事件的使用时因为该xpath所标志的为按钮事件
还有一些是根据标签名进行获取的
String s=dr.findElement(By.tagName(“tagName”)).getAttribute(“class”)
tagName也就是控件名称,比如input
大体上以上获取的方法基本包括了页面上所有能够获取到的信息,不管一个html页面中有多少种控件组合而成,其属性基本都是以上几种,只要结合使用以上信息,就能够完成整个页面的信息获取。
selenium 可以用xpath或者css来定位目标.
对于frame, 如果没有id, 可以用name或者其他属性来定位. 例如: //frame[@name='xxx']
如果所有属性都没有, 那就通过先定位该frame的祖辈级元素来缩减范围, 并逐步缩减到目标唯一.例如: //div[@id='aaa']//frame
xpath定位,你用chrome浏览器,在页面上右键-》审查元素,然后会弹出开发者工具,里面会显示你选中部分的页面源码并高亮你选择的地方,在源码里右键,选择copy xpath 用这个定位。
首先,selenium webdriver识别元素是个大难题,甚至有时候为了元素能够正确识别,甚至会延长等待时间,脚本执行的正确性比速度重要些。
然后再说IE Driver,如果用IE执行测试,不建议用xpath selecter定位,因为IE对xpath的支持不是很好,建议尽可能用id、name等定位方法,或者使用Css selecter。
当然,如果脚本很简单,纯追求速度的话,可以使用HtmlUnitDriver,不用打开浏览器运行测试,速度很快,但是限制也比较多,还要你自己实践研究了。
定位页面元素主要有以下几种方法
//通过Id定位元素
WebElement element = driver.findElement(By.id(“id名"));
//通过name定位元素
WebElement element = driver.findElement(By.name(“name名"));
//通过xpath定位元素
WebElement element = driver.findElement(By.xpath(“xpath路径"));
//通过标签的值定位元素
WebElement cheese = driver.findElement(By.linkText(“标签的值"));
//通过class的值定位元素
List list=driver.findElements(By.className(“class值"));
//通过标签名定位元素
List list = driver.findElements(By.tagName(“标签名"));
几种方式定位到此页面的"搜索答案"按钮
id:driver.findElement(By.id("search-btn"));
class:driver.findElement(By.className("btn-global"));
xpath:driver.findElement(By.xpath("//button[@class='39b7-4f0a-8cf3-914d btn-global']"));
linkText:driver.findElement(By.linkText("搜索答案"));
还有tagName就是通过name元素进行定位
常用的就是这些了
已有5位网友发表了看法:
访客 评论于 2022-09-22 08:59:09 回复
m的学习我是根据java语言来进行的,所以很多语法都是根据java而来的。 很多时候我们都在与页面打交道,这样或多或少的应该对html代码有一点了解。html 也就是所说的超文本标记语言,利用一些标签的集合来搭建整个页面。 每一个标签都会有自己的属性,现
访客 评论于 2022-09-22 05:15:39 回复
id(“id名"));//通过name定位元素WebElement element = driver.findElement(By.name(“name名"));//通过xpath定位元素WebEleme
访客 评论于 2022-09-22 13:13:19 回复
者工具,里面会显示你选中部分的页面源码并高亮你选择的地方,在源码里右键,选择copy xpath 用这个定位。首先,selenium webdriver识别元素是个大难题,甚至有时候为了元素能够正确识别,甚至会延长等待时间,脚本执行的正确性比速
访客 评论于 2022-09-22 13:21:06 回复
/frameselenium新手求助,关于一个元素的定位xpath定位,你用chrome浏览器,在页面上右键-》审查元素,然后会弹出开发者工具,里面会显示你选中部分的页面源码并高亮你选择的地方,在
访客 评论于 2022-09-22 04:26:32 回复
可以获取上面的div盒子了以百度经验首页html代码为例:a target="_blank" href=""手机/a此代码显示的为一个链接,那么怎么获取该链接呢?WebEleme