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

2021/6/27 23:55:35

本文主要是介绍Web自动化测试3(Selenium操控元素),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

文章目录

  • 操控元素的基本方法
      • 1.1 点击元素
      • 1.2 输入框
      • 1.3 获取元素信息
      • 1.4 获取元素属性
      • 1.5 获取元素文本内容


操控元素的基本方法

选择到元素之后,我们的代码会返回元素对应的 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')



这篇关于Web自动化测试3(Selenium操控元素)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程