python:selenium如何对网页元素进行定位

一、相关函数

首先看一下有什么可以用到的函数吧。
很简单的查看函数
定位单个匹配元素的方法有:

find_element_by_id
find_element_by_name
find_element_by_xpath
find_element_by_link_text
find_element_by_partial_link_text
find_element_by_tag_name
find_element_by_class_name
find_element_by_css_selector

定位多个匹配元素的方法有:

find_elements_by_name
find_elements_by_xpath
find_elements_by_link_text
find_elements_by_partial_link_text
find_elements_by_tag_name
find_elements_by_class_name
find_elements_by_css_selector

根据不同页面的不同情况来查找定位到我们所需要的元素。

二、来些例子

(引用度娘比较大众化 ,没有在做广告)
如何查看源码:在浏览器按下快捷键F12即可(普遍情况)

①:id

看id
上代码方便省事

from selenium import webdriver

driver = webdriver.Firefox() # 初始化一个火狐浏览器实例:driver
driver.get('http://www.baidu.com')# 通过get()方法,打开一个url站点
search = driver.find_element_by_id('haha')# 以id匹配,返回一个对应的element元素
#如果想要往里面传送数据就在后面加上.send_keys("")
##search.send_keys("")

search即为对应的element元素(就那个搜索框)
如果没有元素匹配传入的id值,将会抛出一个NoSuchElementException异常

②:name

剩下的基本都差不多相同地方 (思想)不再赘述.

name

from selenium import webdriver

driver = webdriver.Firefox() 
driver.get('http://www.baidu.com')
search = driver.find_element_by_name('wd')# 以name匹配

③:Xpath

XPath是用于在XML文档中查找节点的一种语言。由于HTML可以是XML(XHTML)的实现,因此我们可以利用这种强大的语言在网页中进行元素的定位。XPath扩展并支持了通过id或name属性定位的简单方法,并提供了各种新的操作,例如在页面上查找第三个复选框等。

使用Xpath的一个原因是,有时候页面上我们需要定位的元素并没有id属性和name属性,这时候就可以用Xpath以绝对路径的方式进行元素定位,或者是通过id或name属性值定位到父元素再取到子元素。

扫描二维码关注公众号,回复: 10715994 查看本文章

对于Xpath的知识,在此不做介绍,有需要的同学看看专门介绍Xpath的网站或教程,比如:
Xpath教程

上图!
Xpath

from selenium import webdriver

driver = webdriver.Firefox() 
driver.get('http://www.baidu.com')
search = driver.find_element_by_xpath('//*[@id="kw"]')# 以Xpath匹配

④:tag_name

当我们想通过元素的标签名称来定位一个元素时,可以使用find_element_by_tag_name()这个方法,其将返回具有给定标签名称的第一个元素:

from selenium import webdriver

driver = webdriver.Firefox() 
driver.get('http://www.baidu.com')
search = driver.find_element_by_tag_name('input')# 以tagname匹配

在这里,我们直接通过input的元素标签名来进行定位,因为百度首页上第一个input为搜索框,所以我们可以这样()使用 。如果匹配不到,同样会抛出NoSuchElementException异常。

⑤:class类名

如果我们想通过元素的class属性值来定位,那么可以使用find_element_by_class_name()方法。

from selenium import webdriver

driver = webdriver.Firefox() 
driver.get('http://www.baidu.com')
enter = driver.find_element_by_class_name('bg s_btn')
#如果想进入enter,就加click
##enter.click()

class
不能老是针对那个搜索框哈,换一个按钮试一试。在这里,我们通过class类名定位了百度首页的搜索按钮。

⑥:css selector

和Xpath很类似嘛

from selenium import webdriver

driver = webdriver.Firefox() 
driver.get('http://www.baidu.com')
enter = driver.find_element_by_css_selector('#su')
#如果想进入enter,就加click
##enter.click()

css

⑦:链接link

除了上述的元素定位方式,我们还可以通过标签上的文字进行元素定位,使用的是find_element_by_link_text()方法。
在这里插入图片描述
如果我们需要定位到“地图”那个链接元素上,就可以这样操作:

from selenium import webdriver

driver = webdriver.Firefox() 
driver.get('http://www.baidu.com')
director= driver.find_element_by_link_text('地图')

结束

成功定位页面元素是对页面进行复杂操作的一个重要前提,大家加油,如有错误之处敬请指出。

发布了15 篇原创文章 · 获赞 0 · 访问量 242

猜你喜欢

转载自blog.csdn.net/qq_44796882/article/details/105460575