如何在Selenium Python中定位多个元素?详细示例

2021年3月20日14:28:24 发表评论 1,334 次浏览

Selenium Python中的定位器策略是用于定位页面中单个或多个元素并在该页面上执行操作的方法。 Selenium的Python模块旨在通过Python执行自动测试。 Selenium Python绑定提供了一个简单的API, 可以使用Selenium WebDriver编写功能/验收测试。后有装硒并签出–使用get方法导航链接, 你可能想使用Selenium Python玩更多游戏。在使用硒(例如lsbin)打开页面后, 你可能想要自动单击某些按钮或自动填写表单或执行任何此类自动任务。本文围绕在Selenium Python中查找多个元素展开。

定位多个元素的定位器策略

Selenium Python对元素遵循不同的定位策略。一个人可以用7种不同的方式来定位多个元素。这是python中Selenium的定位策略列表–

定位器 描述
find_elements_by_name 名称属性值与位置匹配的所有元素将被返回。
find_elements_by_xpath 将返回所有具有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 将返回所有具有匹配CSS选择器的元素。

find_elements_by_name

使用此策略, 将返回名称属性值与位置匹配的所有元素。如果没有元素具有匹配的名称属性, 则将引发NoSuchElementException。

句法 -

driver.find_elements_by_name("name_of_element")

示例–

例如, 考虑以下页面来源:

< html >
  < body >
   < form id = "loginForm" >
    < input name = "username" type = "text" />
    < input name = "username" type = "username" />
    < input name = "continue" type = "submit" value = "Login" />
   </ form >
  </ body >
< html >

现在, 在创建驱动程序之后, 你可以使用-

elements = driver.find_elements_by_name('username')

要检查实际实施情况, 请访问–find_elements_by_name()驱动程序方法– Selenium Python

find_elements_by_xpath

使用此策略, 将返回所有xpath模式与位置匹配的元素。如果没有元素具有匹配的元素属性, 则将引发NoSuchElementException。

句法 -

driver.find_elements_by_xpath("xpath")

示例–

例如, 考虑以下页面来源:

< html >
  < body >
   < form id = "loginForm" >
    < input name = "username" type = "text" />
    < input name = "password" type = "password" />
    < input name = "continue" type = "submit" value = "Login" />
   </ form >
  </ body >
< html >

现在, 在创建驱动程序之后, 你可以使用-

login_form = driver.find_elements_by_xpath("/html/body/form[1]")
login_form = driver.find_elements_by_xpath("//form[1]")

要检查实际实施情况, 请访问–find_elements_by_xpath()驱动程序方法– Selenium Python

find_elements_by_link_text

使用此策略, 将返回链接文本值与位置匹配的所有元素。如果没有元素具有匹配的链接文本属性, 则将引发NoSuchElementException。

句法 -

driver.find_elements_by_link_text("Text of Link")

示例–

例如, 考虑以下页面来源:

< 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 >

现在, 在创建驱动程序之后, 你可以使用-

login_form = driver.find_elements_by_link_text('Continue')

要检查实际实施情况, 请访问–find_elements_by_link_text()驱动程序方法– Selenium Python

find_elements_by_partial_link_text

使用此策略, 将返回部分链接文本值与位置匹配的所有元素。如果没有元素具有匹配的部分链接文本属性, 则将引发NoSuchElementException。

句法 -

driver.find_elements_by_partial_link_text("Text of Link")

示例–

例如, 考虑以下页面来源:

< 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 >

现在, 在创建驱动程序之后, 你可以使用-捕获所有元素

login_form = driver.find_elements_by_partial_link_text('Conti')

要检查实际实施情况, 请访问–find_elements_by_partial_link_text()驱动程序方法– Selenium Python

find_elements_by_tag_name

使用此策略, 将返回具有给定标签名称的所有元素。如果没有元素具有匹配的标签名称, 则将引发NoSuchElementException。

句法 -

driver.find_elements_by_tag_name("Tag name")

示例–

例如, 考虑以下页面来源:

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

现在, 在创建驱动程序之后, 你可以使用-捕获所有元素

login_form = driver.find_elements_by_tag_name('h1')

要检查实际实施情况, 请访问–find_elements_by_tag_name()驱动程序方法– Selenium Python

find_elements_by_class_name

使用此策略, 将返回具有匹配类属性名称的前几个元素。如果没有元素具有匹配的类属性名称, 则将引发NoSuchElementException。

句法 -

driver.find_elements_by_class_name("class_of_element")

示例–

例如, 考虑以下页面来源:

< html >
  < body >
   < p class = "content" >Site content goes here.</ p >
</ body >
< html >

现在, 在创建驱动程序之后, 你可以使用-捕获所有元素

content = driver.find_elements_by_class_name('content')

要检查实际实施情况, 请访问–find_elements_by_class_name()驱动程序方法– Selenium Python

find_elements_by_css_selector

使用此策略, 将返回所有具有匹配CSS选择器的元素。如果没有元素具有匹配的CSS选择器, 则将引发NoSuchElementException。

句法 -

driver.find_elements_by_css_selector("CSS Selectors")

示例–

例如, 考虑以下页面来源:

< html >
  < body >
   < p class = "content" >Site content goes here.</ p >
</ body >
< html >

现在, 在创建驱动程序之后, 你可以使用-捕获所有元素

content = driver.find_elements_by_css_selector('p.content')

要检查实际实施情况, 请访问–find_elements_by_css_selector()驱动程序方法– Selenium Python

首先, 你的面试准备可通过以下方式增强你的数据结构概念:Python DS课程。


木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: