测试之前先要想明白登录的过程
登录无非就是输用户名、密码、点击登录就行了,这次呢我没有直接从qq登录界面开始。我从百度搜索开始。
分三步完成
第一步 百度搜索qq空间
主要的代码都有注释,我就不过多解释了
还有就是为什么我这只有一个id,那是因为我这个测试中用到的属性id很多,我就为了简化一部分代码,写了一个方法,也就下面图片里的
其实还有人注意我还有两三行代码,就是下面这串代码,这串代码是我用了cookie登录了我的百度账号,不登录也可以,我只是多写了,刚开始学这个,当然我想多学点方法,多练一练。
第二步 点击qq空间链接,并且切换到qq空间的窗口
链接就是下图这个
注释有解释
第三步 最重要的登录
1.先选择frame,选择账号密码登录方法登录qq空间
2.登录
下面奉上一份qq空间登录测试的全部代码
import pytest
from selenium import webdriver
import time
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
def test_query():
s = Service("chromedriver.exe")
driver = webdriver.Chrome(service=s)
def id(element):
return driver.find_element(By.ID, element)
url = "https://www.baidu.com/"
driver.get(url)
# 串口巨大化
driver.maximize_window()
time.sleep(2)
driver.add_cookie({"name": 'BIDUPSID', "value": '**************************'})
driver.add_cookie({"name": 'BDUSS',
"value": '****************************************************************************************************************************8'})
time.sleep(5)
driver.refresh()
time.sleep(2)
# 在百度搜索框中输入qq空间
id("kw").send_keys("qq空间")
time.sleep(2)
# 点击百度一下
id("su").click()
time.sleep(15)
# 点击qq空间的链接
driver.find_element(By.XPATH, "//*[@id='1']/div/div[1]/h3/a[1]").click()
time.sleep(2)
# 选择qq空间串口,因为点击qq空间会产生一个新的窗口,必须选择新的窗口才能对它进行操作
driver.switch_to.window(driver.window_handles[1])
time.sleep(2)
# 输入和点击登录都在frame里,必须先选择它,才能进行操作
driver.switch_to.frame(driver.find_element(By.ID, "login_frame"))
# 选择登陆方式
driver.find_element(By.ID, "switcher_plogin").click()
time.sleep(2)
el = id("u")
# 输入QQ号
el.send_keys("*******")
time.sleep(2)
# 键盘操作,ctrl+a全选
el.send_keys(Keys.CONTROL, "a")
time.sleep(2)
# 删除
el.send_keys(Keys.BACKSPACE)
time.sleep(2)
# 重新输入一边qq号
el.send_keys("*********")
time.sleep(2)
# 输入密码
id("p").send_keys("*********")
time.sleep(2)
# 点击登录
id("login_button").click()
time.sleep(5)
# 进入qq空间空间后 查看下面的说说要进行滚动
gd = "window.scrollTo(0,10000)"
driver.execute_script(gd)
time.sleep(2)
# 对滚动的最后位置进行截图
driver.get_screenshot_as_file("qq.png")
time.sleep(2)
driver.quit()
if __name__ == '__main__':
pytest.main(["-s", "test_select.py"])
完事了,刚刚学如果有不对的一定要多指教。