
1 利用Selenium IDE
我们可以通过firefox添加插件Selenium IDE并开启。当点击红色的录制按钮后,我们对网页进行 *** 作后,该工具会录制所有的行为并转化为selenium命令,当然也就包含有了locator。
方法优点:简单、方便
方法不足:对于一些复杂点的行为可能会漏掉,因此也就无法捕获相应的locator;此外locator是自动获取的,可能不是很直观,另外无法得到统一样式的locator。
2 利用Firebug
同样firefox的插件中可以添加firebug。在Tools->Web Developer->Firebug中打开Firebug,于是能够看到页面的下半部分有显示Firebug窗口,可以查看HTML,CSS等。因为了解的粗浅,所以只能说说知道的几点简单功能。
如果我们需要查看页面某个元素的locator,可以鼠标右击,选择Inspect Element with Firebug, 于是就到了元素对应的html源码位置。这样我们根据这部分源码来写locator。
但是,往往对于一些element如button等,右击后没有反应时,我们可以考虑选择它们旁边的元素进行,到源码后再通过查找其兄弟元素源码或者上一层来找到相应源码。这里主要根据是当我们鼠标放在以某tag为根节点的源码的上时,上面的页面对应的界面元素会有相应标记。
方法缺点:写出的locator可能并不是页面的唯一,这样selenium运行就难以识别
单选比较好 *** 作,先定位需要单选的某个元素,然后点击一下即可。
多选好像也比较容易,依次定位需要选择的元素,点击即可。
下拉框的 *** 作相对复杂一些,需要用到Select模块。
先导入该类
在select模块中有以下定位方法
测试页面
然后,再演示下拉框的不同选择的方式
Selenium打开一个页面之后,默认是在父页面进行 *** 作,此时如果这个页面还有子页面,想要获取子页面的节点元素信息则需要切换到子页面进行擦走,这时候switch_toframe()就来了。如果想回到父页面,用switch_toparent_frame()即可。
既然是模拟浏览器 *** 作,自然也就需要能模拟鼠标的一些 *** 作了,这里需要导入ActionChains 类。
左键
这个其实就是页面交互 *** 作中的点击click() *** 作。
右键
context_click()
在上述 *** 作中
双击
double_click()
drag_and_drop(source,target)拖拽 *** 作嘛,开始位置和结束位置需要被指定,这个常用于滑块类验证码的 *** 作之类。
selenium中的Keys()类提供了大部分的键盘 *** 作方法,通过send_keys()方法来模拟键盘上的按键。
引入Keys类
常见的键盘 *** 作
send_keys(KeysBACK_SPACE):删除键(BackSpace)
send_keys(KeysSPACE):空格键(Space)
send_keys(KeysTAB):制表键(TAB)
send_keys(KeysESCAPE):回退键(ESCAPE)
send_keys(KeysENTER):回车键(ENTER)
send_keys(KeysCONTRL,'a'):全选(Ctrl+A)
send_keys(KeysCONTRL,'c'):复制(Ctrl+C)
send_keys(KeysCONTRL,'x'):剪切(Ctrl+X)
send_keys(KeysCONTRL,'v'):粘贴(Ctrl+V)
send_keys(KeysF1):键盘F1
send_keys(KeysF12):键盘F12
实例 *** 作演示:
定位需要 *** 作的元素,然后 *** 作即可!
如果遇到使用ajax加载的网页,页面元素可能不是同时加载出来的,这个时候尝试在get方法执行完成时获取网页源代码可能并非浏览器完全加载完成的页面。所以,这种情况下需要设置延时等待一定时间,确保全部节点都加载出来。
等待有三种方式:强制等待、隐式等待和显式等待
1强制等待
直接timesleep(n)强制等待n秒,在执行get方法之后执行。
2隐式等待
implicitly_wait()设置等待时间,如果到时间有元素节点没有加载出来,就会抛出异常。
3 显式等待
设置一个等待时间和一个条件,在规定时间内,每隔一段时间查看下条件是否成立,如果成立那么程序就继续执行,否则就抛出一个超时异常。
WebDriverWait的参数说明:
WebDriverWait(driver,timeout,poll_frequency=05,ignored_exceptions=None)
driver: 浏览器驱动
timeout: 超时时间,等待的最长时间(同时要考虑隐性等待时间)
poll_frequency: 每次检测的间隔时间,默认是05秒
ignored_exceptions:超时后的异常信息,默认情况下抛出NoSuchElementException异常
until(method,message='')
method: 在等待期间,每隔一段时间调用这个传入的方法,直到返回值不是False
message: 如果超时,抛出TimeoutException,将message传入异常
until_not(method,message='')
until_not 与until相反,until是当某元素出现或什么条件成立则继续执行,until_not是当某元素消失或什么条件不成立则继续执行,参数也相同。
其他等待条件
还有一些 *** 作,比如下拉进度条,模拟javaScript,使用execute_script方法来实现。
在selenium使用过程中,还可以很方便对Cookie进行获取、添加与删除等 *** 作。
输出:
这个可以通过浏览器自带的f12 。
或者通过鼠标右键,审计元素获得当前html源代码。
步骤如下:
使用框架载入形式,代码如下:
代码解析:
src="123htm" 载入的页面 。
scrolling=no 有3个选择 分别为yes no auto 这个就是设置下拉条的,yes为有下拉条,no
为没有,auto为自动识别。
width=500 载入页面的宽度 。
height=500 载入页面的高度 。
bordercolor="#000000" 载入页面的背景颜色 。
提示:只要复制我那句代码,然后再把宽度和高度设置成你想要的。
1、可以通过浏览器的调试功能,例如Firefox按F12,点网络标签,然后就可以看到网页的所有数据信息,网页通过AJAX异步加载的数据也可以得到。
2、使用抓包类的工具,如SmartSniff,经过分析也可以得到数据也可以得到数据!
以上就是关于如何 获取网页元素的xpath全部的内容,包括:如何 获取网页元素的xpath、selenium超全教程(4)-持续更新中、python下用selenium的webdriver包如何取得打开页面的html源代码呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)