0


Selenium元素定位

在Selenium中可以通过多种方式来定位标签,返回标签元素对象 ,Selenium提供了下面的方法进行元素定位:

find_element_by_id                         (返回一个元素)
find_element(s)_by_class_name             (根据类名获取元素列表)
find_element(s)_by_name                 (根据标签的name属性值返回包含标签对象元素的列表)
find_element(s)_by_xpath                 (返回一个包含元素的列表)
find_element(s)_by_link_text             (根据连接文本获取元素列表)
find_element(s)_by_partial_link_text     (根据链接包含的文本获取元素列表)
find_element(s)_by_tag_name             (根据标签名获取元素列表)
find_element(s)_by_css_selector         (根据css选择器来获取元素列表)

提示:elements是寻找多个元素会返回一个​

list

除了上面这些公有的方法,我们还有2个私有的方法来帮助页页面对象的定位。

这两个方法就是find_element​(by=By.CLASS_NAME, value=name)和​find_elements(by=By.CLASS_NAME, value=name)

(新版的Python已经不支持公有的方法,需要写成私有的方法来定位 ):

在使用​

find_element

​和​

find_elements时,我们需要先导入
from selenium.webdriver.common.by import By
借助 By 来传入定位方式,需要先引入,主要是为了防止定位方式写错。

一、通过id定位

如果你知道元素的​

id

​属性,那么就使用​

id

​定位吧。在​

id

​定位里,会返回第一个​

id

​属性匹配的元素,如果没有元素匹配,会抛出​

NoSuchElementException

​异常。

driver.find_element(By.ID, 'value')
# value为标签元素

示例:

通过百度搜索框标签,进行定位输入

搜索框的id为‘kw’

driver.find_element(By.ID, 'kw')

二、通过name定位

如果你知道元素的​

name

​属性,那么就用这个定位吧。在​

name

​定位里,会返回第一个​

name

​属性匹配的元素,如果没有元素匹配,会抛出​

NoSuchElementException

​异常。

driver.find_element(By.NAME,'value')

示例:

如上图,百度搜索框的name是‘wd‘

driver.find_element(By.NAME,'wd')

三、通过xpath定位

driver.find_element(By.XPATH, 'value')

示例

百度百度搜索框的xpath是’//*[@id="kw"]‘

driver.find_element(By.XPATH, '//*[@id="kw"]')

四、通过链接文本定义超链接定位

如果你知道一个锚标签使用了什么文本,那么就使用这种方法。在超链接定位里,会返回第一个文本属性匹配的链接,如果没有元素匹配,会抛出​

NoSuchElementException

​异常。

driver.find_element(By.LINK_TEXT,'value')
driver.find_element(By.PARTIAL_LINK_TEXT, 'value')

示例:

已有HTML代码

<html>
 <body>
  <p>Are you sure you want to do this?</p>
  <a href="continue.html">Continue</a>
  <a href="cancel.html">Cancel</a>
</body>
<html>

可以这样定位 ​

continue.html

​链接:

driver.find_element(By.LINK_TEXT,'Continue')
driver.find_element(By.PARTIAL_LINK_TEXT, 'Conti')

五、通过标签名定位

知道元素标签名就使用这个定位,如果没有元素匹配,会抛出​

NoSuchElementException

​异常。

driver.find_element(By.TAG_NAME,'value')

示例:

<html>
 <body>
  <h1>Welcome</h1>
  <p>Site content goes here.</p>
</body>
<html>

可以这样定位​

h1

​元素:

driver.find_element(By.TAG_NAME,'h1')

六、通过css定位

知道​

class

​就使用这个定位,只返回匹配的第一个,无元素匹配,会抛出​

NoSuchElementException

​异常

driver.find_element(By.CLASS_NAME,'value')

示例:

用class定位百度搜索框

driver.find_element(By.CLASS_NAME, 's_ipt')

本文转载自: https://blog.csdn.net/m0_61491995/article/details/126327988
版权归原作者 __Samual 所有, 如有侵权,请联系我们删除。

“Selenium元素定位”的评论:

还没有评论