📜  在Selenium Python中定位多个元素

📅  最后修改于: 2022-05-13 01:55:50.351000             🧑  作者: Mango

在Selenium Python中定位多个元素

Selenium Python中的定位器策略是用于从页面中定位单个或多个元素并对其执行操作的方法。 Selenium 的Python模块是为使用Python执行自动化测试而构建的。 Selenium Python绑定提供了一个简单的 API 来使用Selenium WebDriver 编写功能/验收测试。在安装了selenium并签出 – 使用 get 方法导航链接之后,您可能想更多地使用Selenium Python。在使用selenium (如 geeksforgeeks)打开页面后,您可能希望自动单击某些按钮或自动填写表格或任何此类自动化任务。本文围绕在Selenium Python中定位多个元素展开。

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

Selenium Python遵循不同的元素定位策略。可以通过 7 种不同的方式定位多个元素。以下是Python中Selenium的定位策略列表——

LocatorsDescription
find_elements_by_nameAll elements with name attribute value matching the location will be returned.
find_elements_by_xpathAll elements with xpath syntax matching the location will be returned.
find_elements_by_link_textAll elements with link text value matching the location will be returned.
find_elements_by_partial_link_textAll elements with partial link text value matching the location will be returned.
find_elements_by_tag_nameAll elements with given tag name will be returned.
find_elements_by_class_nameAll elements with matching class attribute name will be returned.
find_elements_by_css_selectorAll elements with matching CSS selector will be returned.

find_elements_by_name

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

句法 -
driver.find_elements_by_name("name_of_element")

例子 -
例如,考虑这个页面源:


 
  
              
 

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

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

例子 -
例如,考虑这个页面源:


 
  
              
 

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

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

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

句法 -
driver.find_elements_by_link_text("Text of Link")

例子 -
例如,考虑这个页面源:


 
  

Are you sure you want to do this?

  Continue   Cancel

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

login_form = driver.find_elements_by_link_text('Continue')

要检查实际的实现,请访问 – find_elements_by_link_text() 驱动方法 – Selenium Python

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

句法 -
driver.find_elements_by_partial_link_text("Text of Link")

例子 -
例如,考虑这个页面源:


 
  

Are you sure you want to do this?

  Continue   Cancel

现在,在您创建驱动程序后,您可以使用以下命令获取所有元素 -

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

例子 -
例如,考虑这个页面源:


 
  

Welcome

  

Site content goes here.

现在,在您创建驱动程序后,您可以使用以下命令获取所有元素 -

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

例子 -
例如,考虑这个页面源:


 
  

Site content goes here.

现在,在您创建驱动程序后,您可以使用以下命令获取所有元素 -

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

例子 -
例如,考虑这个页面源:


 
  

Site content goes here.

现在,在您创建驱动程序后,您可以使用以下命令获取所有元素 -

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

要检查实际实现,请访问 – find_elements_by_css_selector() 驱动方法 – Selenium Python