📜  如何使用Selenium Python定位元素?

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

如何使用Selenium Python定位元素?

Selenium:是一种自动化 Web 浏览器的开源工具。它提供了一个单一的界面,让您可以使用 Ruby、 Java、NodeJS、 PHP、Perl、 Python和 C# 等编程语言编写测试脚本。我个人更喜欢Python ,因为在Python中编写代码非常容易。浏览器驱动程序然后在您设备上的浏览器实例上执行这些脚本。要安装此模块,请在终端中运行此命令。

安装:

pip install selenium

让我们看看如何从网页中复制元素:

步骤1:左键单击页面上的任意位置,然后单击检查。将鼠标悬停在该元素上,它将突出显示所需元素,在控制台或突出显示区域中左键单击,然后复制您喜欢使用的路径。

第1步

步骤 2:现在再次左键单击要检查的元素,这里是 google 搜索框。之后点击检查。

第2步

Step3:将鼠标悬停在元素上,它会在控制台或高亮区域中左键单击所需的元素,然后复制您喜欢使用的路径。

第 3 步

Selenium提供了定位元素的方法。一些最常用的元素是:

  • find_element_by_xpath
  • find_element_by_css_selector
  • find_element_by_name
  • find_element_by_id
  • find_element_by_class_name

让我们看一步一步的实现:

第 1 步:导入库并使用 chromedrivermanager。

Python3
import selenium
import time
import webdriver_manager
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
  
# To make it work on older versions
# of chrome we will use ChromeDriverManager
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
  
driver.get('https://www.google.com')


Python3
ele = driver.find_element_by_xpath(
    '/html/body/div[2]/div[2]/form/div[2]/div[1]/div[1]/div/div[2]/input').click()


Python3
ele = driver.find_element_by_css_selector(
    '#tsf > div:nth-child(2) > div.A8SBwf > div.RNNXgb > div > div.a4bIc > input').click()


Python3
ele = driver.find_element_by_name('q').click()


Python3
ele = driver.find_element_by_id( 'id name').click()


Python3
ele = driver.find_element_by_class_name("gLFyf gsfi").click()


Python3
import selenium
import time
import webdriver_manager
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
  
# To make it work on older versions 
# of chrome we will use ChromeDriverManager
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get('https://www.google.com')
  
# We can use any one of the ele to locate the element
ele = driver.find_element_by_xpath(
    '/html/body/div[2]/div[2]/form/div[2]/div[1]/div[1]/div/div[2]/input').click()
  
ele = driver.find_element_by_css_selector(
    '#tsf > div:nth-child(2) > div.A8SBwf.emcav > div.RNNXgb > div > div.a4bIc > input').click()
  
ele = driver.find_element_by_name('q').click()
ele = driver.find_element_by_class_name('gLFyf gsfi').click()


第 2 步: find_element_by_xpath。

当我们没有合适的 id 或 name 属性时,您可能想要使用此属性。

蟒蛇3

ele = driver.find_element_by_xpath(
    '/html/body/div[2]/div[2]/form/div[2]/div[1]/div[1]/div/div[2]/input').click()

第 3 步: find_element_by_css_selector。

这是最准确的选择器之一。它有助于返回带有 class_attribute 名称的名称。

蟒蛇3

ele = driver.find_element_by_css_selector(
    '#tsf > div:nth-child(2) > div.A8SBwf > div.RNNXgb > div > div.a4bIc > input').click()

第 4 步: find_element_by_name。

我们还可以使用名称查找元素。我们必须指定要为其定位元素的名称

蟒蛇3

ele = driver.find_element_by_name('q').click()

第 5 步: find_element_by_id

这是定位元素的最简单方法。 CSS ID 对于页面上的每个元素都是唯一的。因此,一个 ID 可以唯一地标识一个元素。

蟒蛇3

ele = driver.find_element_by_id( 'id name').click()

第 6 步: find_element_by_class_name

这不是首选方式,因为许多元素具有相同的类,我们也可以使用 css_selector 而不是 class_name。此外,它将返回第一个给定的类名元素,否则“无此类异常”。

蟒蛇3

ele = driver.find_element_by_class_name("gLFyf gsfi").click()

下面是完整的实现:

蟒蛇3

import selenium
import time
import webdriver_manager
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
  
# To make it work on older versions 
# of chrome we will use ChromeDriverManager
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get('https://www.google.com')
  
# We can use any one of the ele to locate the element
ele = driver.find_element_by_xpath(
    '/html/body/div[2]/div[2]/form/div[2]/div[1]/div[1]/div/div[2]/input').click()
  
ele = driver.find_element_by_css_selector(
    '#tsf > div:nth-child(2) > div.A8SBwf.emcav > div.RNNXgb > div > div.a4bIc > input').click()
  
ele = driver.find_element_by_name('q').click()
ele = driver.find_element_by_class_name('gLFyf gsfi').click()

输出:

使用这些定位器中的任何一个自动选择谷歌搜索框