使用 Python 和 Selenium 实现 Web 自动化

Web 自动化是公司在开发中测试产品的最佳方式之一,尤其是应用程序的功能,例如点击、滚动和其他操作。 

从本质上讲,网络自动化是关于模仿人类行为,因为确保软件适用于所有设备类型的用户至关重要。

在本文中,我们将学习如何使用 Selenium 作为自动化工具来使用 Python 测试网站并自动化整个过程,而无需在浏览器上使用鼠标或键盘。Selenium 不能单独与 Python 一起工作,而是与许多其他编程语言一起工作。 

Selenium有什么用?

Selenium 允许我们在没有人参与的情况下浏览或使用浏览器,并通过代码自动化流程,例如输入用户输入并与网站交互。例如,可以使用 Selenium 自动提交表单。Selenium 可以自行完成所有操作,无需人工单击。

入门

在 Selenium 可以通过代码执行任何操作之前,我们需要能够运行浏览器自动化并使其无缝的包和工具。 

安装

本节,我们安装 Selenium 包和 WebDriver 可执行文件。首先,检查Chrome浏览器的版本,使其与WebDriver exec文件的版本相同。

在我们的本地机器上需要安装以下内容:

Chrome 浏览器。在这里下载

下载ChromeDriver的最新稳定版本。在 ChromeDriver 网页上,检查以确认 Chrome 的版本与 ChromeDriver 的版本匹配

现在,运行以下命令在终端中安装 Selenium:

pip install selenium

自动化网页

首先,创建一个包含该文件和下载的 ChromeDriver exec 文件的新文件夹。Selenium 要求驱动程序与所选浏览器交互,在本教程中,我们使用的是 Chrome 浏览器。

必须将 ChromeDriver 放在与 Python 文件相同的目录中。

项目的目录应如下所示:

在这个项目中使用 ChromeDriver 的另一种方法是找到文件的路径位置并复制它,它应该如下所示:

MacBook 用户:

/Users/<computer user name>/Desktop/chromedriver

Windows 用户:

C:\Users\<计算机用户名\Desktop\chromdriver

WebDriver 是连接 Selenium 代码与 Chrome 浏览器一起工作的桥梁。Chrome 浏览器提供了桥梁。没有它,自动化将是不可能的。

接下来,让我们将以下代码复制并粘贴到

automation.py

文件:

# automation.py
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
chrome_driver_path = './chromedriver'
service = Service(chrome_drive_path)
driver = webdriver.Chrome(service=service)
url = "https://en.wikipedia.org/wiki/Main_Page"
driver.get(url)
article_count = driver.find_element(By.CSS_SELECTOR, "#articlecount a")
print(article_count.text)
drive.close()

由于我们将使用 Selenium 浏览 Wikipedia,因此在上面的代码片段中会出现以下情况:

  • 从 selenium 模块导入函数webdriver
  • selenium.webdriver模块提供了所有的 WebDriver 实现,Service 对象用于处理浏览器驱动
  • Byclass 用于使用其 CSS 类、ID 等来定位网页文档中的元素
  • Keys 类模拟键盘的按键操作,如 RETURN / Enter、F1、Alt 等
  • 将 chromedriver exec 文件分配给变量
  • 调用驱动程序的可执行路径到服务对象
  • 接下来是实例化 Chrome 浏览器webdriver.Chrome()使用服务参数
  • 定义要检查的网页的url
  • 使用.get()方法将导航到 url 给出的页面

在 Wikipedia 页面上,打开检查元素以访问我们将用于从页面获取详细信息以实现自动化的元素。

现在开始查找文章计数的任务。WebDriver 通过使用 find_element 方法定位元素并使用

By.CSS_SELECTOR

作为选择器名称的第一个参数,

#articlecount a.

在我们运行 Python 程序之前,脚本有方法,

driver.close()

,运行测试后关闭浏览器窗口。

使用以下命令运行程序:

python automation.py

来自终端的结果应该显示文章计数,它显示网页上的确切数字6,545,457

模拟点击动作

从我们目前所做的来看,很明显 Selenium 无需使用或单击鼠标即可导航网站。

现在,让我们模拟一个动作,浏览器对点击页面上的链接做出反应。

更新

automation.py

使用这些代码行:

# automation.py
# import modules
contact_us = driver.find_element(By.LINK_TEXT, "Contact us")
contact_us.click()

使用此代码片段,我们可以找到链接文本“联系我们”的元素

By.LINK_TEXT

. 找到元素后,将

contact_us

采取行动

.click()

方法。

再次,我们运行命令:

python automation.py

上面的命令给出了联系我们页面的结果。

搜索网页

Selenium 有很多用例。可以通过自动化来搜索网页,从而为您提供搜索词的结果。

尽管如此,在同一个文件automation.py中,使用以下代码更新文件:

# automation.py
search = driver.find_element(By.NAME, "search")
search.send_keys("React", Keys.ENTER)

上面的代码通过使用

find_element

方法与输入的名称属性,搜索。

此外,该

send_keys

模拟按下 ENTER 键,搜索关键字React

页面的结果应如下所示:

结论

本文概述了如何在 Python 中使用 Selenium 实现 Web 自动化,特别是对于想知道代码中是否存在错误以及如何修复它们的专业开发人员。

使用 Selenium 和 Python 实现 Web 自动化的可能性是无穷无尽的。一些用例包括填写在线表格、申请 LinkedIn 工作、玩点击游戏等。你知道使用 Selenium 的其他用例吗? 

请在下面的评论中分享您最喜欢的用例。

学到更多