选择到元素之后,我们的代码会返回元素对应的 WebElement对象,通过这个对象,我们就可以操控元素了。
操控元素通常包括
点击元素
在元素中输入字符串,通常是对输入框这样的元素
获取元素包含的信息,比如文本内容,元素的属性
点击元素 非常简单,就是调用元素WebElement对象的 click方法。前面我们已经学过。
这里我们要补充一点。
当我们调用 WebElement 对象的 click 方法去点击元素的时候, 浏览器接收到自动化命令,点击的是该元素的中心点位置 。
例如,对于下面的这样搜索python教程
百度一下对应的id
运行如下代码:即点击”百度一下“
ele=driver.find_element_by_id('su').click()
输入字符串也非常简单,就是调用元素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教程') # 输入新字符串
获取元素的文本内容
我们已经知道,通过WebElement对象的 text 属性,可以获取元素 展示在界面上的文本内容。
比如:
element = driver.find_element_by_id('animal') print(element.text)
通过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')) # 获取输入框中的文本
通过WebElement对象的 text 属性,可以获取元素 展示在界面上的 文本内容。
但是,有时候,元素的文本内容没有展示在界面上,或者没有完全完全展示在界面上。 这时,用WebElement对象的text属性,获取文本内容,就会有问题。
出现这种情况,可以尝试使用 element.get_attribute('innerText')
,或者 element.get_attribute('textContent')