Web自动化测试3(Selenium操控元素)
作者:互联网
文章目录
操控元素的基本方法
选择到元素之后,我们的代码会返回元素对应的 WebElement对象,通过这个对象,我们就可以操控元素了。
操控元素通常包括
-
点击元素
-
在元素中输入字符串,通常是对输入框这样的元素
-
获取元素包含的信息,比如文本内容,元素的属性
1.1 点击元素
点击元素 非常简单,就是调用元素WebElement对象的 click方法。前面我们已经学过。
这里我们要补充一点。
当我们调用 WebElement 对象的 click 方法去点击元素的时候, 浏览器接收到自动化命令,点击的是该元素的中心点位置 。
例如,对于下面的这样搜索python教程
百度一下对应的id
运行如下代码:即点击”百度一下“
ele=driver.find_element_by_id('su').click()
1.2 输入框
输入字符串也非常简单,就是调用元素WebElement对象的send_keys方法。前面我们也已经学过。
如果我们要 把输入框中已经有的内容清除掉,可以使用WebElement对象的clear方法
并且按F12,观察HTML的内容
我们要写一个自动化程序:要求在输入框中填入信息:
而且要做到输入框中已经有的提示字符,需要先 清除掉
代码应该如下
driver.get('https://www.baidu.com')
element = driver.find_element_by_id('kw')
element.clear() # 清除输入框已有的字符串
element.send_keys('python教程') # 输入新字符串
1.3 获取元素信息
获取元素的文本内容
我们已经知道,通过WebElement对象的 text 属性,可以获取元素 展示在界面上的文本内容。
比如:
element = driver.find_element_by_id('animal')
print(element.text)
1.4 获取元素属性
通过WebElement对象的get_attribute
方法来获取元素的属性值,
比如要获取元素属性srcid的值,就可以使用 element.get_attribute(srcid')
如下:
# id 为 1 的元素就是第一个搜索结果
ele = driver.find_element_by_id('1')
#获取元素属性srcid的值
print(ele.get_attribute('srcid'))
1599
Process finished with exit code 0
执行完自动化代码,如果想关闭浏览器窗口可以调用WebDriver对象的 quit 方法,像这样 driver.quit()
获取整个元素对应的HTML
要获取整个元素对应的HTML文本内容,可以使用 element.get_attribute('outerHTML')
#id 为 1 的元素就是第一个搜索结果
ele = driver.find_element_by_id('1')
#获取整个元素对应的HTML文本内容
print(ele.get_attribute('outerHTML'))
整个元素对应的HTML文本内容:
<div class="result c-container new-pmd" id="1" srcid="1599" tpl="se_com_default" data-click="{"rsv_bdr":"0","p5":1}"><h3 class="t"><a data-click="{
'F':'778317EA',
'F1':'9D73F1C4',
'F2':'4CA6DE6B',
'F3':'54E5243F',
'T':'1624806808',
'y':'DBE6FBAE'
}" href="http://www.baidu.com/link?url=-mlLNnEMRMP_piV5abbrxt75z3W75u6LFsjIK_KcwrVqfB8Sgor49GLHmRtdR4KYnAs0zZb56As4_HwUKZnUAq" target="_blank"><em>Python</em> 基础<em>教程</em> | 菜鸟<em>教程</em></a></h3><div class="c-row c-gap-top-small"><div class="general_image_pic c-span3" style="position:relative;top:2px;"><a class="c-img c-img3 c-img-radius-large" style="height:85px" href="http://www.baidu.com/link?url=-mlLNnEMRMP_piV5abbrxt75z3W75u6LFsjIK_KcwrVqfB8Sgor49GLHmRtdR4KYnAs0zZb56As4_HwUKZnUAq" target="_blank"><img class="c-img c-img3 c-img-radius-large" src="https://dss2.bdstatic.com/6Ot1bjeh1BF3odCf/it/u=2123173153,3955482397&fm=218&app=92&f=JPEG?w=121&h=75&s=61321C720E80E6138B013B5C0300C064" style="height:85px;"><span class="c-img-border c-img-radius-large"></span></a></div><div class="c-span9 c-span-last"><div class="c-abstract"><span class=" newTimeFactor_before_abs c-color-gray2 m">2020年1月1日 </span>本<em>教程</em>适合想从零开始学习 <em>Python</em> 编程语言的开发人员。当然本<em>教程</em>也会对一些模块进行深入,让你更好的了解 <em>Python</em> 的应用。 本<em>教程</em>主要针对 <em>Python</em> 2.x 版本的学习,如果你使用的是 <em>Py</em>...</div><style>.user-avatar {
display: flex;
flex-direction: row;
align-items: center;
justify-content: flex-start;
}</style><div class="f13 c-gap-top-xsmall se_st_footer user-avatar"><a target="_blank" href="http://www.baidu.com/link?url=-mlLNnEMRMP_piV5abbrxt75z3W75u6LFsjIK_KcwrVqfB8Sgor49GLHmRtdR4KYnAs0zZb56As4_HwUKZnUAq" class="c-showurl c-color-gray" style="text-decoration:none;position:relative;">www.runoob.com/<b>python</b>/<b>python</b>-t...</a><div class="c-tools c-gap-left" id="tools_1564408348152163872_1" data-tools="{"title":"Python 基础教程 | 菜鸟教程","url":"http://www.baidu.com/link?url=-mlLNnEMRMP_piV5abbrxt75z3W75u6LFsjIK_KcwrVqfB8Sgor49GLHmRtdR4KYnAs0zZb56As4_HwUKZnUAq"}"><i class="c-icon f13"></i></div><span class="c-icons-outer"><span class="c-icons-inner"></span></span><style>.snapshoot, .snapshoot:visited {
color: #9195A3!important;
}
.snapshoot:active, .snapshoot:hover {
color: #626675!important;
}</style><a data-click="{'rsv_snapshot':'1'}" href="http://cache.baiducontent.com/c?m=Pta1JAk-wXbXDkEYcLlRHawg5Nzdl-i26dW5ngzeDmh98OUw8qVUBQmFW6O4WcfSYmKNnzLEm5gOKcBnyxYcbMxGDPszxPrq__dwqfUWb5xENBK5iJMbeSmHJXfYjrc1TWLx3ZU2m5nHaIE7JLlELq&p=8770895b85cc43ff57ee9474505792&newp=c23bc64ad49909e808e2977e07429e231610db2151d4d11f6b82c825d7331b001c3bbfb423291501d3cf7c6303a84e5ae8f63072350923a3dda5c91d9fb4c57479d26f73&s=cfcd208495d565ef&user=baidu&fm=sc&query=python%BD%CC%B3%CC&qid=e3120ce5001ebfb2&p1=1" target="_blank" class="m c-gap-left c-color-gray kuaizhao snapshoot">百度快照</a></div></div></div></div>
Process finished with exit code 0
如果,只是想获取某个元素 内部 的HTML文本内容,可以使用 element.get_attribute('innerHTML')
获取输入框里面的文字
对于input输入框的元素,要获取里面的输入文本,用text属性是不行的,这时可以使用 element.get_attribute('value')
比如
element =driver.find_element_by_id("1")
print(element.get_attribute('value')) # 获取输入框中的文本
1.5 获取元素文本内容
通过WebElement对象的 text 属性,可以获取元素 展示在界面上的 文本内容。
但是,有时候,元素的文本内容没有展示在界面上,或者没有完全完全展示在界面上。 这时,用WebElement对象的text属性,获取文本内容,就会有问题。
出现这种情况,可以尝试使用 element.get_attribute('innerText')
,或者 element.get_attribute('textContent')
标签:Web,操控,get,元素,Selenium,element,获取,输入框,文本 来源: https://blog.csdn.net/weixin_55782195/article/details/118277739