selenium处理显性等待
1.在做UI自动化测试时,发现有些页面元素需要等待较长时间才能出现,如有些接口是异步,页面操作结果信息不能及时展示,这时候
要检查操作结果是否正确,需要用到selenium的显性等待,如下图,操作结果是通过轮询的方式展示:
2.selenium中 expected_conditions.presence_of_element_located() 可以解决显示等待的问题,代码如下:
def is_fail_exist(locator):
try:
#检查页面上出现错误元素信息是否存在
WebDriverWait(driver, 20, 0.5).until(EC.presence_of_element_located((By.XPATH,locator)))
#点击错误提示框,只有点击错误提示框,才会展示详细错误信息
driver.find_element_by_xpath('//body/div[1]/div/div/div[4]/div/div[1]').click()
time.sleep(2)
#打印详细错误结果
print(f'操作失败:{driver.find_element_by_xpath(locator).text}')
#关闭错误提示框
driver.find_element_by_xpath('//*[@id="console"]/div[4]/div/div[1]/span').click()
time.sleep(1)
except TimeoutException:
#如果没有出现错误信息,提示操作成功
print('操作成功')
finally:
driver.close()
is_fail_exist('//body/div[1]/div/div/div[4]/div/div[2]/div/div/div/div[2]')
输出结果:
操作失败:Delete Instance failed, accesskeyId:LTAI4FhqRcwgZKKxLzb85rUc, RequestId: 2AD89469-3110-426A-ACE9-CF5E6FA6014D, ErrorType: Client, ErrorCode: InvalidInstanceId.NotFound, ErrorMsg: The specified InstanceId does not exist.