在Python中用Selenium点击一个按钮

您所在的位置:网站首页 selenium点击下载方法保存 在Python中用Selenium点击一个按钮

在Python中用Selenium点击一个按钮

2023-11-07 01:09| 来源: 网络整理| 查看: 265

现代的网页都有很多功能。按钮是其中的一个基本组成部分。Selenium Python API绑定允许我们访问Selenium WebDrivers来自动点击按钮。在这篇文章中,我们将按照步骤来点击按钮。

设置环境

我们首先需要 导入selenium来开始我们的操作,然后我们将导入一个WebDriver,允许我们自动处理网页。我们将使用Chrome Webdriver在chrome浏览器中进行导航。需要导入'time'模块,因为它将为浏览器正确加载页面提供一些时间。

from selenium import webdriver from selenium.webdriver.support.select import Select import time driver = webdriver.Chrome(executable_path = r'G:/scraping_practice/chromedriver_win32/chromedriver.exe') driver.get('https://www.imdb.com/search/title/')

chrome驱动的可执行路径被选中。现在驱动程序已经准备好了,可以导航到 ***"IMDb高级标题搜索"***页面。

寻找按钮

要点击一个按钮,首先我们需要找到这个按钮。我们需要在Chrome中打开该页面。在按钮上点击右键,从上下文菜单中选择 检查元素从上下文菜单中选择。检查器窗口将打开,按钮的HTML标记被选中。

然后,我们可以通过使用以下方法在网页上找到按钮。

find_element_by_class_name() find_element_by_css_selector() find_element_by_id() find_element_by_xpath() find_element_by_link_text() find_element_by_id() find_element_by_name() find_element_by_tag_name() find_element_by_partial_link_text() 使用 "id "点击单选按钮

我们将从*"IMDb高级标题搜索"页面下的"你的评分 "选项中找到"排除我看过的标题 "*单选按钮。

让我们右击该按钮,然后点击上下文菜单中的 "检查 "元素。我们可以从Html中看到标签正在控制单选按钮(见图片:2)。所以我们可以用find_element_by_id()方法找到单选按钮,让我们看看代码。

driver.find_element_by_id('my_ratings|exclude')

我们可以创建一个类型为WebElement 的变量 'button' ,然后用click() 方法点击它。

button = driver.find_element_by_id('my_ratings|exclude') button.click() time.sleep(3)

当代码被执行时,*"排除我见过的标题 "*单选按钮将被选中。我们使用 *[time.sleep(3)](https://blog.finxter.com/manipulating-dates-and-times-in-python/ "Manipulating Dates and Times in Python")*方法,允许3秒的时间来正常加载下一个页面。

使用xpath点击搜索按钮

在页面的最后部分,我们可以看到一个搜索按钮。如何点击它?让我们来检查它

我们可以看到它是一个button 标签,我们不能使用这里的类来寻找元素,因为它是一个普通的 "主 "类。然而,我们可以用"find_element_by_xpath"的方法找到它,知道xpath ,右击 标签,转到复制,然后从上下文菜单中选择 "复制X路径 "选项。 标签的xpath 将被复制。然后把它变成一个变量,只需对它应用click() 方法。该代码将看起来像这样。

search_button = driver.find_element_by_xpath('//*[@id="main"]/p[3]/button') search_button.click()

当我们运行该代码时,在点击 "搜索 "按钮后,我们将被转到另一个页面。

使用链接文本点击 "登录 "按钮

在 "高级标题搜索 "页面的右上角,我们可以看到一个 "登录 "选项按钮。让我们右键点击它并进行检查。

虽然在 标签里有一个class 的名字,但我们可以在这里使用一个有趣的方法,叫做find_element_by_link_text() 。有了这个方法,第一个具有与位置相匹配的链接文本值的元素将被返回。如果没有找到与链接文本属性相匹配的任何元素,将产生一个NoSuchElementException 。

所以在这里我们只需要把准确的文本作为参数放在find_element_by_link_text() 方法里面,就可以找到这个元素。让我们试着用这个方法点击 "Sign In "按钮。

sign_button = driver.find_element_by_link_text('Sign In') sign_button.click()

当我们检查代码时,我们会看到,我们将被转移到Sign In页面。这个find_element_by_link_text() 方法似乎很容易操作,即使对新手来说也是如此。

如何在按钮上点击右键

Selenium模块有另一个有用的类,叫做*"ActionChains",我们可以用它来执行复杂的操作,如鼠标悬停,拖放,按键等。我们将有一个关于"ActionChains"* 的详细Finxter博客教程*。*今天我们将用它来右键点击 "登录 "按钮。

我们需要从ActionChains 类中导入selenium.webdriver 。然后我们将创建一个动作链类的对象来右键点击它。这个ActionChains 类将把驱动程序作为一个参数。

from selenium.webdriver import ActionChains actions = ActionChains(driver)

现在我们需要检查 "登录 "按钮的WebElement 。因为我们之前已经做过了,所以我们可以在这里复制并粘贴它。

sign_button = driver.find_element_by_link_text('Sign In')

现在对于右键选项,我们将抓取另一个名为*"context_click"的方法。* ActionChains 类中的这个方法在一个元素上执行上下文点击(右击)。perform() 方法将需要执行ActionChains 类中定义的点击。

actions.context_click(sign_button).perform()

当我们执行时,Chrome浏览器将加载并自动右键点击 "登录 "按钮。

现在,如果我们想在上下文菜单中点击一个按钮,我们可以用点击按钮的方法来完成。

如何双击一个按钮

要双击一个按钮或菜单,我们将遵循与右键点击按钮指令相同的程序。但这里我们将使用double_click() ,而不是context_click() 。这个double_click() 方法允许我们双击一个元素。就比如说,双击 "Sign In "按钮的代码将是。

from selenium.webdriver import ActionChains actions = ActionChains(driver) sign_button = driver.find_element_by_link_text('Sign In') actions.double_click(sign_button).perform()

要了解更多关于Python中selenium包的各种类和方法,可以随时查看文档。如果你想提高你的Python技能,请查看我们的免费电子邮件学院与Python小抄。

在Python中用Selenium点击按钮》一文首次出现在Finxter上。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3