如何选取元素

如何选取元素,第1张

如何选取元素 selenium 提供如下强大的定位元素的方法。 id=id name=name dom=javascriptExpression xpath=xpathExpression css=cssSelectorSyntax

1 通过 ID,name 选择元素 : 如 seleniumtype("id=q","百度"); seleniumtype("name=search","百度")

2 link= 根据链接文字来 *** 作:如 seleniumclick("link=个人资料");

3 根据 XPath 来选择元素 :XPath Checker xpath=//img[@alt='The image alt text'] xpath=//table[@id='table1']//tr[4]/td[2] xpath=//a[contains(@href,'#id1')] xpath=//a[contains(@href,'#id1')]/@class xpath=(//table[@class='stylee'])//th[text()='theHeaderText']//td xpath=//input[@name='name2' and @value='yes'] xpath=//[text()="right"] 如: seleniumtype("xpath=//input[@name='useremail']", "xxx@123com"); // 向 input 中 type 为 text 的栏位键入信息 seleniumcheck("xpath=//input[(@name='usersex')and(@value='男')]");// 向 input 中 type 为 radiod 的选取

4 dom 选择 dom=documentforms['myForm']myDropdown { return documentlinks[1]; }; foo();

5 css 选择器这个不常用,它可以支持 css2, css3 选择器

七使用 selenium 这个对象来进行测试 1 获取标 : assertEquals("Insert title here", seleniumgetTitle()); 2 判断页面是否存在一个 useremail 元 素 :assertTrue(seleniumisElementPresent("xpath=//input[@name='useremail']")); 得到文本框里的文 字: assertEquals(seleniumgetValue("xpath=//input[@name='userusername']"),"xxxaas"); 测试 check box : assertTrue(seleniumisChecked("xpath=//input[(@name='usersex')and(@value=' 男')]")); 点击提交按钮 : seleniumclick("xpath=//input[@type='button']"); 等待页面载入 : seleniumwaitForPageToLoad("2000"); 验证指定文本出现在提交给用户的页面上: assertTrue(seleniumisTextPresent("验证码输入有误,请核实后再 输入")); 判断下拉框里选择了哪个选 项 :assertEquals(seleniumgetSelectedIndex("xpath=//SELECT[@name='HATIMING']"), "1"); 如何测试一些错误消息的显示?assertTrue(seleniumgetBodyText()indexOf("错误消息 ")>=0); getBodyText 返回的时浏览器页面上的文字,不回包含 html 代码的,如果要显示 html 代码,用下面 这个:seleniumgetHtmlSource(); dom=documentimages[56] dom=function foo() link=textPattern css=a[href="#id3"] css=span#firstChild + span 2 3 4 5 6 7 8 9

要点击一个 Menu 时需要对 SPAN 元素进行 *** 作,后来在 Selenium 的论坛中找到了答案。示例代码如下:

1

2 click

3 //span[contains(text(),'String')]

4

5

在实际使用时,把 String 部分替换为实际的 text 就可以了。

另外一种做法是不行的:

1

2 click

3 //span[@text='String']

4

5

1获取当前网页标题:String title=drivergetTitle();

2获取当前网页的URL:String url=drivergetCurrentUrl();

3获取元素的文本值,比如链接,纯文本等:String text=driverfindElement(By location)getText();

4获取元素指定属性的值:String attribute=driverfindElement(By location)getAttribute("属性"); //这里的参数可以是class、name等任意属性

5获取元素输入框内的文本值:String attribute=driverfindElement(By location)getAttribute("value");

6获取元素标签名称:String tagName=driverfindElement(By location)getTagName();

1是否显示:使用elementis_displayed()方法。

2是否存在:使用find_element_by_xxx()方法,捕获其抛出的异常, 如果存在异常的话则可以确定该元素不存在。

3是否被选中:一般判断表单元素,如radio或checkbox是否被选中,使用elementis_selected()方法( 返回true代表已被选中,返回false代表未被选中 )。

4是否有效:即是否为灰化状态,使用elementis_enabled()方法( 可用于判断button/checkbox/radio是否置灰 )。

知识点:

知识点:了解 driver对象的常用属性和方法

注意:最新版本的selenium已经取消了这种格式,取而代之的是:

你要先导入:

然后再:

知识点:掌握 driver对象定位标签元素获取标签对象的方法

代码实现,如下,获取腾讯新闻首页的新闻标签的内容。

知识点:掌握 元素对象的 *** 作方法

参考代码示例:

知识点:掌握 selenium控制标签页的切换

知识点:掌握 selenium控制frame标签的切换

知识点:掌握 利用selenium获取cookie的方法

知识点:掌握 selenium控制浏览器执行js代码的方法

知识点:掌握 手动实现页面等待

知识点:掌握 selenium开启无界面模式

知识点:了解 selenium使用**

知识点:了解 selenium替换user-agent

笔记:

01设置元素等待时间

自动化测试的时候,元素定位没有错,但是跑脚本的时候却报错了

例如,登录的时候要等登录页面加载出来才能输入用户名和密码

selenium设置元素等待时间的3种方式及区别

1sleep() --固定等待时间:强制等待,不能把握准确的等等时间,适合调试时用

2implicitly_wait() --隐式等待时间:等页面加载完成才执行下一步 *** 作,一般设置一次即可

3WebDriverWait --显示等待时间:配合untill()和not untill()方法,根据判断条件 灵活处理等待时间

要先设置一个超长时间,在这个时间内,程序根据调用频率每隔几秒查看一下,如果条件满足,则执行下一步 *** 作,若不满足且超过了等待时间则抛出异常

导包:from seleniumwebdriversupportui import WebDriverWait

使用:WebDriverWait(driver, 超时时间, 调用频率, 要忽略的异常)until(要执行的方法, 超时时返回的错误信息)

实例:

replace:

02键盘事件Keys类

制表符:send_keys(KeysTAB)

退出键:send_keys(KeysESCAPE)

F1:send_keys(KeysF1)   f1~f12 以此类推

03二次定位

顾名思义,通过多个元素,定位两次

drfind_element(ByCLASS_NAME,"s_input")send_keys("python")

二次定位:

drfind_element(ByNAME,"query")find_element(ByCLASS_NAME,"s_input")send_keys("python")

04selenium鼠标悬停类-- ActionChains()

导包:from seleniumwebdrivercommonaction_chainsimport ActionChains

实例:将鼠标移动至更多设置,悬停鼠标

elem1= drfind_element(ByLINK_TEXT,"设置")

ActionChains(dr)move_to_element(elem1)perform()

05selenium警告框的处理

很多web应用经常会遇到JavaScript编写的alert 、confirm 以及prompt d窗,需要用到switch_toalert来切换d窗,并对d窗进行输入信息,关闭等处理。

switch_toalerttext  --获取d窗文本信息

switch_toalertaccept()  --点击d窗中确定按钮

switch_toalertdismiss()  --点击d出中取消按钮

switch_toalertsendKeys("字符串")  --在d窗中输入信息

实例:

06下拉菜单选择的三种方式

导包:from seleniumwebdriversupportuiimport Select

#选择下拉框的o2

elem1 = drfind_element(ByID,"s3Id")

1:根据value值定位

Select(elem1)select_by_value("o2val")

2根据index定位

Select(elem1)select_by_index(1)

3根据下拉框文本信息定位

Select(elem1)select_by_visible_text("o2")

07多窗口切换

window_handles --获取所有窗口句柄

switch_towindow(指定窗口) --切换到指定窗口

08selenium之JS *** 作浏览器滚动条位置

execute_script("windowscrollTo(0,n);")

09selenium之JS *** 作隐藏元素

隐藏元素的标识:style="display:none;"

一般我们通过将隐藏元素的属性修改成显示再定位

10 *** 作excel文件

将测试数据参数化用到

101准备参数化数据文件

102导包

打开文件,填写文档路径

运行结果:

定位到sheet的位置

读取sheet的行和列的内容

#读取表的行的方法

rows = sheet1nrows

print("行数",rows)

columns = sheet1ncols

print("列数",columns)

读取指定行的值

#读取指定行的值

rowValue1 = sheet1row_values(0)

print(rowValue1)

#读取指定列的值

colValue1 = sheet1col_values(0)

print(colValue1)

#输出所有用户名和对应的密码

for iin range(1,rows):

print("用户名:" + sheet1row_values(i)[0] +",密码:" + sheet1row_values(i)[1])

1、可以通过浏览器的调试功能,例如Firefox按F12,点网络标签,然后就可以看到网页的所有数据信息,网页通过AJAX异步加载的数据也可以得到。

2、使用抓包类的工具,如SmartSniff,经过分析也可以得到数据也可以得到数据!

以上就是关于如何选取元素全部的内容,包括:如何选取元素、selenium3+python可以更改元素的style吗、selenium获取测试对象的内容和状态等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9314310.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存