一件代发50个货源网站,石家庄百度快照优化排名,网站宣传图,东莞市电池网站建设目录#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结#xff08;尾部小惊喜#xff09; 前言
1、自动化测试中隐… 目录导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结尾部小惊喜 前言
1、自动化测试中隐藏的元素如何操作?
面试中我们经常会遇到“隐藏元素是如何操作的”带着这个问题我们看下如何操作
1实现方法
针对隐藏因素的操作常用的操作是通过JS脚本定位到该元素获取对应的元素对象再通过removeAttribute和setAttribute两个方法完成属性的删除或重新复制操作使得当前元素处于显示状态即可。
2实现案例
以下是自定义的一个HTML页面该页面是一个登陆页面其中用户名和登陆按钮都是隐藏的如下
html
body用户名:input iduser_name nameusername typehidden /br密码:input idpass_word namepassword typetext /brbutton typebutton namelogin classlogin_but styledisplay:none; /
/body
/html3实现思路
#主要是使用JS脚本改变标签的属性值
hi_name document.getElementByID(user_name).setAttribute(type, text)
print(driver.execute_script(hi_name ))driver.find_element_by_id(user_name).send_keys(admin)
print(driver.find_element_by_name(login))driver.execute_script(document.getElementsClassName(login_but)[0].removeAttribute(style))2、三种元素等待方式如何理解
在自动化测试中会遇到一些比如环境不稳定、网络不稳定的因素此时可能需要控制脚本执行速度那么就需要用到元素等待操作。
其实不一定设置等待就好各有利弊以下是一些观点仅供参考。
1强制等待
方法
time.sleep(s)
# s表示具体时间单位为秒。含义表示等待s秒后进行下一步操作。直接使用python内置的time模块调用sleep方法即可。
说明强制等待又称强制休眠。作用域为当前脚本。没过多行代码需要进行等待设置那每行代码都需要进行相同的设置操作。
优缺点
优缺点说明优点使用简单需要用时随时调用即可缺点代码重复率高且影响代码执行速率。不能精确设置等待时间过长过段貌似都不合适
示例
from selenium import webdriver
import timedriver webdriver.Chrome()
driver.get(http://localhost/zentao/user-login.html)user_name $(input:first).val(admin)
driver.execute_script(user_name)
time.sleep(0.5)pass_wd $(:password).val(ZenTao123456)
driver.execute_script(pass_wd)
time.sleep(1)2隐式等待
方法
driver.implicitly_wait(s)
# s表示具体时间单位为秒。含义在s时间内页面加载完成进行下一步操作直接通过浏览器驱动对象进行调用。
说明隐式等待也称智能等待也称全局等待。表示整个页面中的所有元素加载完才会执行会根据内部设置的频率不断刷新页面继续加载并检测当前所执行的元素是否加载完成。
如果在设定的时间之前元素加载完成则不会继续等待继续执行下一步。
优缺点
优缺点说明优点对整个脚本的生命周期都起作用只需要设置一次缺点程序会一直等待加载完成才会执行下一步但有时想要的元素加载完了其他的元素没有加载完仍要等待全部加载完才进行下一步不是很灵活也有点费时间。
示例
from selenium import webdriverdriver webdriver.Chrome()
driver.get(http://localhost/zentao/user-login.html)
driver.implicitly_wait(10)user_name $(input:first).val(admin)
driver.execute_script(user_name)pass_wd $(:password).val(ZenTao123456)
driver.execute_script(pass_wd)3显式等待
方法
# 导入包
from selenium.webdriver.support.wait import
# 或者
from selenium.webdriver.support.ui import WebDriverWait部分源码如下
Class WebDriverWait(object):def __init__(self, driver, timeout, poll_frequencyPOLL_FREQUENCY, ignored_exceptionsNone):Constructor, takes a WebDriver instance and timeout in seconds.:Args:- driver - Instance of WebDriver (Ie, Firefox, Chrome or Remote)- timeout - Number of seconds before timing out- poll_frequency - sleep interval between callsBy default, it is 0.5 second.- ignored_exceptions - iterable structure of exception classes ignored during calls.By default, it contains NoSuchElementException only.Example:from selenium.webdriver.support.ui import WebDriverWait \n参数说明
参数说明driver驱动器对象timeout设置刷新页面的超时时间poll_frequency页面刷新频率。默认0.5signored_exceptions表示忽略异常如无法找到元素则抛出NoSuchElementException异常
WebDriverWait模块有两个方法until和until_not
def until(self, method, message):Calls the method provided with the driver as an argument until the \return value is not False.screen Nonestacktrace Noneend_time time.time() self._timeoutwhile True:try:value method(self._driver)if value:return valueexcept self._ignored_exceptions as exc:screen getattr(exc, screen, None)stacktrace getattr(exc, stacktrace, None)time.sleep(self._poll)if time.time() end_time:breakraise TimeoutException(message, screen, stacktrace)def until_not(self, method, message):Calls the method provided with the driver as an argument until the \return value is False.end_time time.time() self._timeoutwhile True:try:value method(self._driver)if not value:return valueexcept self._ignored_exceptions:return Truetime.sleep(self._poll)if time.time() end_time:breakraise TimeoutException(message)说明 method传入对象分两种一种是匿名函数另一种是预置条件对象expected_conditions。
message当出现异常时把异常信息给message
expected_conditions方法通过from selenium.webdriver.support import expected_conditions引入。
含义对单个元素设置一定的频率使其按频率刷新当前页面并检测是都存在该元素。
3、WebDriverWait常用的几个方法
1判断元素是否被加入DOM树中不可见
判断元素是否被加入DOM树中并不代表元素可见如果定位到就返回元素
get_ele WebDriverWait(driver,10).until(expected_conditions.\
presence_of_element_located(By.ID, xxx))2判断元素是否被加入到DOM中并可见
判断元素是否被加入到DOM中并可见代表元素可显示宽和高都大于0
get_ele1 WebDriverWait(driver,10).until(expected_conditions.visibility_of_elemen\
t_located((byBy.ID,valueyyy)))3判断元素是否可见
判断元素是否可见可见返回该元素
get_ele2 WebDriverWait(driver,10).until(expected_conditions.visibility_of(driver\
.find_element(byBy.ID,valuezzz)))4判断是否至少有1个元素存在DOM树中
判断是否至少有1个元素存在DOM树中如果定位到就返回列表
get_ele3 WebDriverWait(driver,10).until(expected_conditions.presence_of_all_elem\
ents_located(By.CSS_SELECTOR,.boss)))5判断指定的元素的属性值中是否包含了预期的字符串
判断指定的元素的属性值中是否包含了预期的字符串返回布尔值
get_ele4 WebDriverWait(driver,10).until(expected_conditions.text_to_be_present_i\
n_element_value(By.CSS_SELECTOR,#su))6判断指定的元素中是否包含了预期的字符串
判断指定的元素中是否包含了预期的字符串返回布尔值
get_ele5 WebDriverWait(driver,10).until(expected_conditions.text_to_be_present_i\
n_element(By.XPATH,//#[idul], u添加))7判断元素是否存在DOM中或不可见
判断元素是否存在DOM中或不可见如果可见返回False否则返回这个元素
get_ele6 WebDriverWait(driver,10).until(expected_conditions.invisibility_of_elem\
ent_located(By.CSS_SELECTOR,#su))8判断元素是否可见且状态为enable
判断元素是否可见且状态为enable(代表可点击)
get_ele7 WebDriverWait(driver,10).until(expected_conditions.element_to_be_clicka\
ble(By.CSS_SELECTOR,#su)).click()下面是我整理的2023年最全的软件测试工程师学习知识架构体系图
一、Python编程入门到精通 二、接口自动化项目实战 三、Web自动化项目实战 四、App自动化项目实战 五、一线大厂简历 六、测试开发DevOps体系 七、常用自动化测试工具 八、JMeter性能测试 九、总结尾部小惊喜
生活中的成功不是偶然的而是由无数个日夜艰辛努力换来的结果。只有通过不懈努力不断学习不断提升自己才能在生活的道路上不断前行。
无论遭遇何种困境都要坚定信心保持勇气和毅力继续前行。只要我们不放弃梦想持之以恒地努力下去就一定能够达到成功的彼岸。
成功不会轻易降临到每一个人身上只有通过不断的拼搏、努力和坚韧的精神才能够取得真正的成功。即使面临再多艰难险阻也要坚持走下去。