微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Web自动化测试3Selenium操控元素

文章目录


操控元素的基本方法

选择到元素之后,我们的代码会返回元素对应的 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="{&quot;rsv_bdr&quot;:&quot;0&quot;,&quot;p5&quot;: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&amp;fm=218&amp;app=92&amp;f=JPEG?w=121&amp;h=75&amp;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日&nbsp;</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="{&quot;title&quot;:&quot;Python 基础教程 | 菜鸟教程&quot;,&quot;url&quot;:&quot;http://www.baidu.com/link?url=-mlLNnEMRMP_piV5abbrxt75z3W75u6LFsjIK_KcwrVqfB8Sgor49GLHmRtdR4KYnAs0zZb56As4_HwUKZnUAq&quot;}"><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&amp;p=8770895b85cc43ff57ee9474505792&amp;newp=c23bc64ad49909e808e2977e07429e231610db2151d4d11f6b82c825d7331b001c3bbfb423291501d3cf7c6303a84e5ae8f63072350923a3dda5c91d9fb4c57479d26f73&amp;s=cfcd208495d565ef&amp;user=baidu&amp;fm=sc&amp;query=python%BD%CC%B3%CC&amp;qid=e3120ce5001ebfb2&amp;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')

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐