这篇文章主要记录Python语言 + Pytest + Selenium实现模拟登录.
步骤:
1. Pytest + Selenium搭配使用.
2. 使用Xpath对元素进行定位.
3. 使用Selenium的input()方法进行输入账号密码及验证码.
4. 登录成功(断言登录成功页面的Title).
要先拿到iframe框架的url, 不然后续无法xpath定位.
代码实现
import pytest
from selenium import webdriver
import time
class TestLogin:
# 初始化操作
def setup_class(self):
# 指定浏览器
self.driver = webdriver.Chrome()
# 指定URL
# 拿到iframe
self.driver.get('https://xui.ptlogin2.qq.com/cgi-bin/xlogin?proxy_url=https%3A//qzs.qq.com/qzone/v6/portal/proxy.html&daid=5&&hide_title_bar=1&low_login=0&qlogin_auto_login=1&no_verifyimg=1&link_target=blank&appid=549000912&style=22&target=self&s_url=https%3A%2F%2Fqzs.qzone.qq.com%2Fqzone%2Fv5%2Floginsucc.html%3Fpara%3Dizone&pt_qr_app=%E6%89%8B%E6%9C%BAQQ%E7%A9%BA%E9%97%B4&pt_qr_link=http%3A//z.qzone.com/download.html&self_regurl=https%3A//qzs.qq.com/qzone/v6/reg/index.html&pt_qr_help_link=http%3A//z.qzone.com/download.html&pt_no_auth=0')
def test_login(self):
time.sleep(3)
# 点击账号密码登录
self.driver.find_element_by_xpath('//*[@id="switcher_plogin"]').click()
# 使用XPath对账号和密码输入框进行定位
self.driver.find_element_by_xpath('//*[@id="u"]').send_keys('账号')
self.driver.find_element_by_xpath('//*[@id="p"]').send_keys('密码')
# 点击登录按钮
self.driver.find_element_by_xpath('//*[@id="login_button"]').click()
# 拿到登录页面的title
title = self.driver.title
asset('QQ空间昵称', title)
time.sleep(3)
# 扫尾工作(此方法在整个类中只执行一次)
def teardown_class(self):
# 退出
self.driver.quit()
# ps: 使用命令行 (pytest -s 文件路径/文件名称) 执行代码