Advertisement

如何结合selenium和requests进行网页登录操作

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:PDF


简介:
本教程将介绍如何利用Python的Selenium库模拟浏览器行为来处理复杂的网页交互,并结合Requests库发送HTTP请求,实现高效稳定的网页自动登录功能。 在自动化测试领域,尤其是Web应用的自动化测试过程中,Selenium 和 Requests 是两个非常重要的工具。Selenium 主要用于模拟用户操作浏览器的行为,而 Requests 则更多地用于发送HTTP请求。将两者结合起来可以在复杂场景下实现更高效的自动登录功能。 #### Selenium 的作用 1. **模拟登录**:通过使用Selenium可以模拟用户的网页交互行为,例如输入用户名、密码,并点击登录按钮。 2. **获取Cookies**:当用户成功登陆后,网站会为浏览器设置一些 Cookies 以识别已登录状态。这些 Cookies 对后续页面访问至关重要。 #### 示例代码详解 下面是一段关于如何使用 Selenium 实现自动登录的示例代码: ```python from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as eccd def start_login(self): chrome_options = Options() # 设置浏览器选项,禁止加载图片及推送通知 prefs = { profile.default_content_setting_values.images: 2, profile.default_content_setting_values.notifications: 2 } chrome_options.add_experimental_option(prefs, prefs) # 根据需求设置 Chrome 启动参数 if self.chrome_args().get(headless_flag) == 1: chrome_options.add_argument(self.chrome_args().get(headless)) chrome_options.add_argument(self.chrome_args().get(nogpu)) chrome_options.add_argument(self.chrome_args().get(noinfobars)) chrome_options.add_argument(self.chrome_args().get(max_windows)) driver = webdriver.Chrome(chrome_options=chrome_options) try: print(Starting login process) wait = WebDriverWait(driver, 30) # 访问登录页面 driver.get(self.login_url) # 输入用户名 login_id = wait.until(eccd.presence_of_element_located((By.XPATH, self.Id_xpath))) login_id.send_keys(self.login_name) # 输入密码 password = wait.until(eccd.presence_of_element_located((By.XPATH, self.pwd_xpath))) password.send_keys(self.password) # 点击登录按钮 submit = wait.until(eccd.presence_of_element_located((By.XPATH, self.login_btn_xpath))) submit.click() # 验证是否成功登陆 login_ok = wait.until(eccd.presence_of_element_located((By.XPATH, self.login_ok_xpath))) if login_ok: print(Login successful) except Exception as e: print(fError: {e}) ``` #### Requests 的应用 虽然示例中没有直接使用 Requests 库,但可以结合 Selenium 获取的 Cookies 进行进一步操作。例如,在登录成功后,可以通过 Requests 发送带有这些 Cookies 的请求来获取需要的数据。 ```python import requests # 使用Selenium获取Cookies cookies = driver.get_cookies() # 通过Requests发送带Cookies的请求 response = requests.get(https://example.com/somepage, cookies={cookie[name]: cookie[value] for cookie in cookies}) print(response.text) ``` #### 总结 利用 Selenium 和 Requests 组合可以实现更高效和复杂的自动化测试任务,同时在数据抓取等领域也十分有用。希望这篇详细的文章能为大家提供有价值的学习资源。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • seleniumrequests
    优质
    本教程将介绍如何利用Python的Selenium库模拟浏览器行为来处理复杂的网页交互,并结合Requests库发送HTTP请求,实现高效稳定的网页自动登录功能。 在自动化测试领域,尤其是Web应用的自动化测试过程中,Selenium 和 Requests 是两个非常重要的工具。Selenium 主要用于模拟用户操作浏览器的行为,而 Requests 则更多地用于发送HTTP请求。将两者结合起来可以在复杂场景下实现更高效的自动登录功能。 #### Selenium 的作用 1. **模拟登录**:通过使用Selenium可以模拟用户的网页交互行为,例如输入用户名、密码,并点击登录按钮。 2. **获取Cookies**:当用户成功登陆后,网站会为浏览器设置一些 Cookies 以识别已登录状态。这些 Cookies 对后续页面访问至关重要。 #### 示例代码详解 下面是一段关于如何使用 Selenium 实现自动登录的示例代码: ```python from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as eccd def start_login(self): chrome_options = Options() # 设置浏览器选项,禁止加载图片及推送通知 prefs = { profile.default_content_setting_values.images: 2, profile.default_content_setting_values.notifications: 2 } chrome_options.add_experimental_option(prefs, prefs) # 根据需求设置 Chrome 启动参数 if self.chrome_args().get(headless_flag) == 1: chrome_options.add_argument(self.chrome_args().get(headless)) chrome_options.add_argument(self.chrome_args().get(nogpu)) chrome_options.add_argument(self.chrome_args().get(noinfobars)) chrome_options.add_argument(self.chrome_args().get(max_windows)) driver = webdriver.Chrome(chrome_options=chrome_options) try: print(Starting login process) wait = WebDriverWait(driver, 30) # 访问登录页面 driver.get(self.login_url) # 输入用户名 login_id = wait.until(eccd.presence_of_element_located((By.XPATH, self.Id_xpath))) login_id.send_keys(self.login_name) # 输入密码 password = wait.until(eccd.presence_of_element_located((By.XPATH, self.pwd_xpath))) password.send_keys(self.password) # 点击登录按钮 submit = wait.until(eccd.presence_of_element_located((By.XPATH, self.login_btn_xpath))) submit.click() # 验证是否成功登陆 login_ok = wait.until(eccd.presence_of_element_located((By.XPATH, self.login_ok_xpath))) if login_ok: print(Login successful) except Exception as e: print(fError: {e}) ``` #### Requests 的应用 虽然示例中没有直接使用 Requests 库,但可以结合 Selenium 获取的 Cookies 进行进一步操作。例如,在登录成功后,可以通过 Requests 发送带有这些 Cookies 的请求来获取需要的数据。 ```python import requests # 使用Selenium获取Cookies cookies = driver.get_cookies() # 通过Requests发送带Cookies的请求 response = requests.get(https://example.com/somepage, cookies={cookie[name]: cookie[value] for cookie in cookies}) print(response.text) ``` #### 总结 利用 Selenium 和 Requests 组合可以实现更高效和复杂的自动化测试任务,同时在数据抓取等领域也十分有用。希望这篇详细的文章能为大家提供有价值的学习资源。
  • SeleniumChromedriver 120.0.6046.0-win64Python自动化
    优质
    本项目介绍如何使用Selenium与ChromeDriver版本120.0.6046.0-win64在Python中实现网页自动化操作,涵盖环境配置及示例代码。 项目介绍: 该案例是利用selenium使用xls中的数据对表单进行自动化填充及提交。 该项目用到了chromedriver版本为120.0.6046.0,系统要求win10 64位,并需要安装谷歌浏览器120.*版本。 通过该项目你可以学习到: 1、selenium自动化操作的基本步骤 2、利用xlwings读取xls数据 3、各版本的谷歌浏览器和chromedriver可以在其官方网站找到下载地址。
  • 绕过面直接入系统
    优质
    本教程将指导用户通过特定的技术手段或后端接口访问方式,安全地绕过常规登录界面,直接进入系统后台进行操作和管理。请注意,此类方法仅适用于合法授权人员使用。 如何绕过登录界面直接进入系统?简单易懂的解释如下:跳过登录界面直接访问系统的方法可以有很多种,但需要注意的是,并不是所有的方法都是合法或者安全的。如果未经授权就试图避开系统的正常入口,可能会违反使用条款或相关法律法规,请谨慎考虑并确保遵守相关规定。
  • 在SQL中转列列转
    优质
    本文将介绍在SQL数据库中如何实现数据透视,包括行转列(PIVOT)与列转行(UNPIVOT)的操作方法及应用场景。 在SQL中如何实现行转列以及列转行的操作?下面通过一个例子来帮助你更好地理解这一概念。
  • 使用JiraConfluence用户管理
    优质
    本篇文章将介绍如何有效地利用Jira和Confluence这两款Atlassian产品来实现高效且灵活的用户管理方案。通过整合二者功能,可以更好地组织团队资源、优化项目协作流程,并确保信息安全与合规性要求得到满足。 手把手教你如何整合Jira和Confluence的用户管理,实现两者使用同一套用户系统。
  • PHP返回上一
    优质
    本文章介绍了在使用PHP进行网页开发时,用户成功登录之后如何自动跳转回登录前所在的页面。通过利用session和header函数实现便捷的页面跳转功能。适合初学者参考学习。 项目需求:当用户访问需要授权才能查看的网站页面时,系统会要求用户提供登录凭证,并将其导向至login.php进行身份验证。 实现这一功能的一种方法是在将用户重定向到登录页之前先保存当前请求的URL在cookie中;一旦成功通过了认证,则可以从该cookie获取先前记录下的URL信息并执行相应的跳转操作。考虑到我正在使用的ThinkPHP框架,可以通过在父类控制器(BaseAction)中的_initialize()函数里添加设置cookie的相关代码来简化此过程。 以下是具体实现的示例: ```php $refer = http:// . $_SERVER[HTTP_HOST] . $_SERVER[REQUEST_URI]; setcookie(referer, $refer, time()+3600); ``` 在这个例子中,我们首先获取当前页面的完整URL,并将其保存到名为referer的cookie里。此操作确保了用户在完成登录后能够被正确地重定向回他们最初尝试访问的那个受保护的网页。
  • 利用PythonFlaskMySQL功能的
    优质
    本教程详细介绍如何使用Python与Flask框架实现MySQL数据库的用户登录功能,包括连接数据库、验证用户名密码及会话管理等步骤。 本段落主要介绍了使用Python的Flask框架操作MySQL实现登录功能的方法,代码简单易懂且具有参考价值。需要的朋友可以参考此内容。
  • 利用PythonFlaskMySQL功能的
    优质
    本教程介绍如何使用Python与Flask框架结合MySQL数据库实现用户登录功能,涵盖环境搭建、代码编写及调试技巧。 本项目使用了Flask-SQLAlchemy、Flask-Login以及Flask-WTF这三个库。通过一个完整的登录实例来介绍如何利用这些工具构建应用程序,并且程序已经成功运行。在用户没有登录的情况下会拦截对success.html页面的访问,只允许已登录的用户查看该页面。 项目的整体结构如下: 首先是配置信息部分,这里设置了数据库连接等基本信息,在config.py文件中定义了以下内容: - DEBUG = True - SQLALCHEMY_ECHO = False - SQLALCHEMY_DATABASE_URI = mysql+pymysql://root:1011@localhost/rl_project?charset=utf8
  • 在PADS Layout中铺铜
    优质
    本教程详细介绍了在PADS Layout软件中执行铺铜操作的方法和技巧,帮助用户掌握高效电路板设计中的关键步骤。 在PADS Layout软件中如何进行铺铜操作?详细讲解使用PADS Layout给PCB板添加覆铜的方法。