像 Selenium 这样的自动化工具使我们能够通过不同的语言和浏览器自动化 Web 流程并测试应用程序。 Python 是它支持的众多语言之一,并且是一种非常简单的语言。
它的Python客户端帮助我们通过Selenium工具与浏览器连接。 Web 测试对于开发 Web 应用程序至关重要,但更重要的是,它使我们能够自动化 Web 流程。
我们需要访问源代码并检查某些元素以自动化此类过程。
本文向您展示如何使用其 Python 客户端和 API 检查某个元素是否存在于 Selenium 中。
要使用 Selenium Python 客户端,我们需要通过以下 pip 命令安装其包:
pip install selenium
除了Python客户端之外,如果我们要使用它们,还需要安装其他工具,例如ChromeDriver。 您可以相当轻松地下载并安装它。
现在,我们可以使用 Selenium 模块及其 Exception 部分来检查元素是否存在。 首先,我们使用 webdriver 模块访问浏览器代理(Chrome)并使用 get()
方法访问我们想要检查其元素的网页。
然后,使用 find_element()
方法,并传递 By.TAG_NAME 参数和要查找的元素(例如 h2)。 find_element()
方法使用 By 策略和定位器来查找元素。
在下面的代码中,我们使用By.TAG_NAME策略来查找我们想要的元素。 我们还可以使用 By.CSS_SELECTOR 来查找元素。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException
driver = webdriver.Chrome(executable_path="C:\chromedriver.exe")
driver.implicitly_wait(0.5)
driver.get("https://thehackernews.com/")
try:
element = driver.find_element(By.TAG_NAME, 'h2')
hackHead = element.text
print("Element exist")
print(hackHead)
except NoSuchElementException:
print("Element does not exist")
driver.close()
输出:
DeprecationWarning: executable_path has been deprecated, please pass in a Service object
driver = webdriver.Chrome(executable_path="C:\chromedriver.exe")
DevTools listening on ws://127.0.0.1:57551/devtools/browser/dce0d9db-6c42-402e-8770-13999aff0e79
Element exist
Pay What You Want for This Collection of White Hat Hacking Courses
我们获得了 Pay What You Want for This Collection of White Hat Hacking Courses 作为元素的内容,但您可能会注意到可执行文件路径周围有一个 DeprecationWarning。
DeprecationWarning: executable_path has been deprecated, please pass in a Service object
driver = webdriver.Chrome(executable_path="C:\chromedriver.exe")
为了解决这个问题,我们需要安装 webdriver-manager 模块来使用 pip 命令处理浏览器交互。
pip install webdriver-manager
然后,使用以下语句将模块导入到您的代码中。
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service
并使用service属性而不是executable_path,并将 Service()
和 ChromeDriverManager()
方法传递给service属性。
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
现在,代码变成:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.implicitly_wait(0.5)
driver.get("https://thehackernews.com/")
try:
l= driver.find_element(By.TAG_NAME, 'h2')
s= l.text
print("Element exist -" + s)
except NoSuchElementException:
print("Element does not exist")
driver.close()
输出:
[WDM] - Downloading: 100%|████████████████████████████████████████████████████████████████████████████████████████████████| 6.29M/6.29M [00:03<00:00, 2.13MB/s]
DevTools listening on ws://127.0.0.1:57442/devtools/browser/2856cae0-e665-42c3-a20d-a847d52658c1
Element exist
Pay What You Want for This Collection of White Hat Hacking Courses
因为这是第一次运行,您可能会看到输出的 [WDM] 部分; 否则,只有 DevTools 消息和代码输出应该是可见的。 这样,您可以使用其 Python 客户端轻松检查 Selenium 中是否存在某个元素。