找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 147|回复: 0

[Web自动化测试] 常用页面操作和等待

[复制链接]

19

主题

3

回帖

79

积分

管理员

积分
79

热心会员湖北省RedHat高手

发表于 2025-6-28 08:58 | 显示全部楼层 |阅读模式
Web
      (1
      2使.send_keys()
LTXIT-20250705094537.jpg
LTXIT-20250705095137.jpg
[Python] 纯文本查看 复制代码
from selenium.webdriver.support.wait import WebDriverWait #导入WebDriverWait
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
driver = webdriver.Edge() #初始化一个Edge浏览器对象
driver.maximize_window() #全屏显示
driver.implicitly_wait(30) #隐式等待30秒
wait = WebDriverWait(driver,20) #显式等待20秒
driver.get('http://192.168.68.8/') #打开网站(这里以Honor Pro2路由器管理页面为例)
login_info_password = driver.find_element(By.XPATH,"//*[@class = 'inputArea paddingleft_14']") #通过xpath定位密码输入框
login_info_password.send_keys('HonPro2@Ltxit.com') #向上面定位到的密码输入框中输入登录密码
login_info_button = driver.find_element(By.XPATH,"//*[@class = 'enter marginleft_290 login_leader_border']") #通过xpath定位登录按钮
login_info_button.click() #点击上面定位到的登录按钮
time.sleep(300)

      3clear()
[Python] 纯文本查看 复制代码
login_info_password.clear() #清空输入内容

      4使.click()
[Python] 纯文本查看 复制代码
login_info_button = driver.find_element(By.XPATH,"//*[@class = 'enter marginleft_290 login_leader_border']") #通过xpath定位登录按钮
login_info_button.click() #点击上面定位到的登录按钮

      5driver.refresh()
[Python] 纯文本查看 复制代码
driver.refresh() #刷新浏览器页面

      6driver.maximize_window()
[Python] 纯文本查看 复制代码
driver.maximize_window() #全屏显示

      7driver.set_window_size(width = XXX,height =XXX)
[Python] 纯文本查看 复制代码
driver.set_window_size(width = 888,height = 999) #自定义调整屏幕显示大小

      8driver.forward()
[Python] 纯文本查看 复制代码
driver.forward() #前进

      9退driver.back()
[Python] 纯文本查看 复制代码
driver.back() #后退

      10URLdriver.current_url
LTXIT-20250705095818.jpg
[Python] 纯文本查看 复制代码
url = driver.current_url #获取网页URL
print(url)

      11driver.title
LTXIT-20250705100007.jpg
[Python] 纯文本查看 复制代码
title = driver.title #获取网页标题
print(title)

      12driver.window_handles
LTXIT-20250705103524.jpg
[Python] 纯文本查看 复制代码
print(driver.window_handles) #查询浏览器当前所有的窗口(标签),返回的是列表,列表里的元素是当前浏览器所有窗口(标签)的名称

      13driver.current_window_handle
LTXIT-20250705103710.jpg
[Python] 纯文本查看 复制代码
print(driver.current_window_handle) #查询浏览器当前所在的窗口(标签),返回的是当前浏览器窗口名称的字符串

      14(driver.switch_to.window(window_name)
[Python] 纯文本查看 复制代码
driver.switch_to.window(window_name) #window_name为需要切换的窗口(标签)的名称

      15driver.switch_to.window(driver.window_handles[-1)
[Python] 纯文本查看 复制代码
driver.switch_to.window(driver.window_handles[-1]) #切换到最新窗口(标签)

      16iframedriver.switch_to.frame(frame_reference)
[Python] 纯文本查看 复制代码
driver.switch_to.frame(frame_reference)#frame_reference为要切换到的窗口的名称或索引,或者是要切换到的框架的Web元素。
例如:
    driver.switch_to.frame('frame_name')
    driver.switch_to.frame(1)
    driver.switch_to.frame(driver.find_elements_by_tag_name("iframe")[0])

      17退driver.switch_to.default_content()
[Python] 纯文本查看 复制代码
driver.switch_to.default_content() #退回到主页面

      18退driver.switch_to.parent_frame()
[Python] 纯文本查看 复制代码
driver.switch_to.parent_frame() #退回到上级页面

      19alertdriver.switch_to.alert
[Python] 纯文本查看 复制代码
alert = driver.switch_to.alert #切换到alert

      20alert.accept()/alert.dismiss()
[Python] 纯文本查看 复制代码
alert.accept() #切换回主页面(点击【确定】按钮回到主页面)
alert.dismiss() #切换回主页面(点击【取消】按钮回到主页面)

      21driver.save_screenshot('xxx.png')
[Python] 纯文本查看 复制代码
driver.save_screenshot('ltxit.png') #截屏保存

      22
            clickf()
[Python] 纯文本查看 复制代码
driver.find_element_by_xpath("//option[@value = '6']").click() #元素定位然后调用clickf()方法进行选择

            Selectselect_by_value法进
[Python] 纯文本查看 复制代码
from selenium.webdriver.support.ui import Select #导入Select类
questionid = driver.find_element_by_xpath("//select[@id = 'questionid']") #定位元素(下拉框)
select = Select(questionid) #创建一个Select对象
select.select_by_value('6') #通过value选择下拉框选项
Select(driver.find_element_by_xpath("//select[@id = 'questionid']")).select_by_value('6') #将上述四行代码合并写法

            Selectselect_by_index法进
[Python] 纯文本查看 复制代码
from selenium.webdriver.support.ui import Select #导入Select类
questionid = driver.find_element_by_xpath("//select[@id = 'questionid']") #定位元素(下拉框)
select = Select(questionid) #创建一个Select对象
select.select_by_index('5') #通过index(索引)选择下拉框选项
Select(driver.find_element_by_xpath("//select[@id = 'questionid']")).select_by_index('5') #将上述四行代码合并写法

            Selectselect_by_visible_text
[Python] 纯文本查看 复制代码
from selenium.webdriver.support.ui import Select #导入Select类
questionid = driver.find_element_by_xpath("//select[@id = 'questionid']") #定位元素(下拉框)
select = Select(questionid) #创建一个Select对象
select.select_by_visible_text('父亲出生的城市') #通过text(选项文本)选择下拉框选项
Select(driver.find_element_by_xpath("//select[@id = 'questionid']")).select_by_visible_text('父亲出生的城市') #将上述四行代码合并写法

      23driver.close()
[Python] 纯文本查看 复制代码
driver.close() #关闭标签

      24退driver.quit()
[Python] 纯文本查看 复制代码
driver.quit() #退出浏览器

Web
      1time.sleep()
[Python] 纯文本查看 复制代码
import time #导入time
time.sleep(X) #强制等待X秒

      2driver.implicitly_wait(xx)---
[Python] 纯文本查看 复制代码
driver.implicitly_wait(30) #隐式等待30秒
    ①一个浏览器对象只需要使用一次
    ②在设定时间内查找元素
    ③在设定时间内出现查找的元素就不再继续等,直接进行下一步
    ④在设定时间内没有出现就报错

      3WebDriverWait(driver,???).until(EC.xxx(("yyy","zzz")))
[Python] 纯文本查看 复制代码
from selenium.webdriver.support.wait import WebDriverWait #导入WebDriverWait
#WebDriverWait(driver, timeout, poll_frequency=POLL_FREQUENCY, ignored_exceptions=None)
#driver:浏览器对象
#timeout:超时时间
#poll_frequency=POLL_FREQUENCY:轮询时间(默认0.5秒)
#ignored_exceptions=None:一般不用管
wait = WebDriverWait(driver,20) #显式等待20秒
from selenium.webdriver.support import expected_conditions as EC #导入expected_conditions并取个别名EC
wait.until(EC.element_to_be_clickable(("xpath","//button[@type = 'submit'][@tabindex = '904']")))
#EC(expected_conditions)是预期条件(元素是否出现/元素是否可见/元素是否可点击等)
#element_to_be_clickable(locator)
#locator是一个定位器,用元祖表示,元祖的第一个元素是定位的方式(通过id定位/通过xpath定位等),元祖的第二个元素是定位的表达式

      
[Python] 纯文本查看 复制代码
element_to_be_clickable:页面元素可见且可以点击

[Python] 纯文本查看 复制代码
presence_of_element_located:页面是否存在某个元素,这不一定意味着该元素是可见的。

[Python] 纯文本查看 复制代码
visibility_of_element_located:页面元素是否存在并且可见

[Python] 纯文本查看 复制代码
presence_of_all_elements_located:页面是否至少存在1个元素

[Python] 纯文本查看 复制代码
visibility_of_any_elements_located:页面是否至少存在1个可见的元素

[Python] 纯文本查看 复制代码
visibility_of_all_elements_located:页面是否所有元素都存在并且可见

[Python] 纯文本查看 复制代码
invisibility_of_element_located:页面元素是否不存在或不可见

[Python] 纯文本查看 复制代码
alert_is_present:页面是否有alert(警告弹框)

[Python] 纯文本查看 复制代码
frame_to_be_available_and_switch_to_it:是否可以切换到iframe

[Python] 纯文本查看 复制代码
new_window_is_opened:是否可以切换窗口(标签)


评分

参与人数 1ITB +50 贡献值 +5 收起 理由
Love + 50 + 5 内容专业易懂

查看全部评分

Archiver|手机版|小黑屋|LTXIT家园 ( 鄂ICP备2025089526号|鄂公网安备42110002000175号 )

GMT+8, 2025-8-3 01:00 , Processed in 0.141365 second(s), 28 queries .

Powered by LTXIT家园 X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表