使用python+selenium+pytest进行百度主页自动化操作

本文介绍了使用Python的Selenium库进行Web自动化测试的详细步骤,包括打开Chrome浏览器,访问百度并登录,模拟用户操作如点击、输入、选择等。之后,文章展示了如何进行高级搜索设置,以及在Bing中复制、粘贴搜索关键词,并实现浏览器滚动。最后,通过pytest生成测试报告。整个过程涵盖了元素定位、等待策略、鼠标操作等关键技巧。
摘要由CSDN通过智能技术生成

1、打开Pycharm,新建一个py文件,文件名test_开头
2、输入代码

from selenium import webdriver #导入web自动化模块
from selenium.webdriver.common.by import By#导入By模块
from selenium.webdriver.support.wait import WebDriverWait#显示等待模块
from selenium.webdriver.support import expected_conditions as EC#判断元素模块
import time#时间模块
from selenium.webdriver.common.action_chains import ActionChains #鼠标操作
from selenium.webdriver.support.select import Select #下拉框处理
from selenium.webdriver.common.keys import Keys#导入keys类

def test_webauto():#定义测试类名称,也可以理解为建立一个测试用例名称
    dr = webdriver.Chrome()#webDriver实例化
    url ='https://www.baidu.com/'#网页地址
    dr.get(url)#请求网页地址

    dr.implicitly_wait(10)#隐式等待,等待10秒
    dr.find_element_by_link_text('登录').click()#找到登录元素,点击登录

    WebDriverWait(dr,10).until(EC.visibility_of_element_located((By.XPATH,'//*[@id="passport-login-pop"]')))#显示等待,等待登录模块弹出
    dr.find_element_by_id('TANGRAM__PSP_11__footerULoginBtn').click()#点击用户登录
    dr.find_element_by_id('TANGRAM__PSP_11__userName').send_keys('test')#在用户输入框输入用户名
    dr.find_element_by_id('TANGRAM__PSP_11__password').send_keys('123456')#在密码输入框输入密码
    time.sleep(1)#强制休眠1秒
    dr.find_element_by_id('TANGRAM__PSP_4__closeBtn').click()#找到关闭按钮点击
    acs = ActionChains(dr)#ActionChains类实例化
    WebDriverWait(dr,10).until(EC.visibility_of_element_located((By.XPATH,'//*[@id="s-usersetting-top"]')))#等待元素出现
    acs.move_to_element(dr.find_element_by_xpath('//*[@id="s-usersetting-top"]')).perform()#鼠标悬浮到设置选项上
    time.sleep(1)
    dr.find_element_by_link_text('搜索设置').click()
    dr.find_element_by_xpath('//*[@id="se-settting-1"]/span[2]/label').click()
    time.sleep(1)
    dr.find_element_by_xpath('//*[@id="wrapper"]/div[6]/div/div/ul/li[2]').click() #点击高级搜索
    #非select下拉框操作
    dr.find_element_by_class_name('c-select-selection').click()
    dr.find_element_by_class_name('c-select-dropdown-list')
    dr.find_element_by_css_selector('#adv-setting-gpc > div > div.c-select-dropdown > div.c-select-dropdown-list > p:nth-child(2)').click()#选择时间
    dr.find_element_by_xpath('//*[@id="wrapper"]/div[6]/span').click()#关闭搜索设置
    dr.find_element_by_css_selector('#kw').send_keys('python')#找到输入框输入python
    #模拟键盘操作
    so = dr.find_element_by_css_selector('#kw')
    so.send_keys(Keys.CONTROL,'a')#选中输入框里的关键字
    time.sleep(1)
    so.send_keys(Keys.CONTROL,'c')#复制选中的关键字
    time.sleep(1)
    so.send_keys(Keys.BACKSPACE)#删除选中的关键字
    time.sleep(1)
    dr.get('http://www.bing.com')#打开bing
    time.sleep(1)
    bingso=dr.find_element_by_id('sb_form_q')#找到bing的搜索框
    bingso.send_keys(Keys.CONTROL,'v')#粘贴复制的文字
    dr.find_element_by_class_name('b_searchboxSubmit').submit()#提交查询
    time.sleep(1)
    down ="var q=document.documentElement.scrollTop=10000"#浏览器滑动操作,滑动到底部
    up ="var q=document.documentElement.scrollTop=0"#浏览器滑动操作,滑动到顶部
    dr.execute_script(down)
    time.sleep(5)
    dr.execute_script(up)
    time.sleep(20)
    dr.quit()

3、这里加入显示等待原因,是为了防止网络延迟导致元素迟出现运行失败
4、在同一个文件夹下建立一个main.py文件

import pytest

if __name__ == '__main__':
    pytest.main(['--html=testreport.html'])#在当前文件夹下生成一个testreport.html的报告文件

5、运行结果

"E:\Python Project\venv\Scripts\python.exe" "E:/Python Project/learnautotest/main.py"
============================= test session starts =============================
platform win32 -- Python 3.7.3, pytest-6.2.1, py-1.10.0, pluggy-0.13.1
rootdir: E:\Python Project\learnautotest
plugins: html-3.1.1, metadata-1.11.0
collected 1 item

Cases\test_autowebaction.py .                                            [100%]

- generated html file: file://E:\Python Project\learnautotest\testreport.html -
============================= 1 passed in 20.35s ==============================

Process finished with exit code 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值