web自动化遇到问题总结-持续更新

1.解决谷歌浏览器提示“Chrome正在受到自动化测试软件的控制”和“密码提示”

解决:conftest.py:
@pytest.fixture(scope=“class”)
def get_driver():
# 第一
option = webdriver.ChromeOptions()
# 解决谷歌浏览器提示“Chrome正在受到自动化测试软件的控制”
option.add_experimental_option(“useAutomationExtension”, False)
option.add_experimental_option(“excludeSwitches”, [‘enable-automation’])
# option.add_argument(‘–headless’) # 给chrome_options添加headless参数
# 解决密码提示
prefs = {“”: “”}
prefs[“credentials_enable_service”] = False
prefs[“profile.password_manager_enabled”] = False
option.add_experimental_option(“prefs”, prefs)
driver = webdriver.Chrome(options=option, executable_path=driver_path)
driver.maximize_window()
driver.implicitly_wait(10)
yield driver
sleep(3)
driver.quit() # 不关闭控制台可能会发生OSError: [WinError 6] 句柄无效。
# 第四

@pytest.fixture(scope=“class”)
def login(get_driver):
# 第二
driver = get_driver
login_page = LoginPage(driver)
# 访问被测地址
login_page.go_url()
login_page.login(config.phone, config.pwd, config.code) # 放在pythho文件中
yield driver
# 第三

2.失败截图;想在本地和allure同时保留(本地保留的目的是方便调试)

def allure_screenshot(self, name=None):
“”“截图”“”
f = self.driver.get_screenshot_as_png()
return allure.attach(f,
name=name,
attachment_type=allure.attachment_type.PNG)
def __save_page_screenshot(self, img_doc):
“”"
:param img_doc:截图时业务功能描述。比如在什么页面做什么操作时截的图。
:return:None
“”"
# 当前时间
now_time = datetime.now().strftime(“%Y-%m-%d %H-%M-%S”)
# 图片的文件名称
file_name = f"{img_doc}_{now_time}.png"
file_path = os.path.join(page_screenshots_dir, file_name)
logger.info(f"开始截图。截图将会保存在:{file_path}")
try:
self.driver.save_screenshot(file_path)
self.allure_screenshot(img_doc)
except:
logger.exception(“页面截图保存失败:{}”.format(img_doc))
raise
logger.info(“页面截图保存成功:{}”.format(img_doc))
在这里插入图片描述在这里插入图片描述

3.高亮显示元素

def highLightEle(self,element):
    """高亮显示页面元素"""
    self.driver.execute_script("arguments[0].setAttribute('style',arguments[1]);",
                     element,"background:white ;border:2px solid red;")      

4.定位元素时存在display:none !important,导致定位不到上传文件的元素

在这里插入图片描述
这时要用到js
js_code = “document.querySelector(‘.el-upload input[type=file]’).style.setProperty(‘display’, ‘block’, ‘important’)”
driver.execute_script(js_code)
翻译:https://blog.csdn.net/qq_43295373/article/details/111593632

5.定位元素时文本有空格或换行

在这里插入图片描述
//*[normalize-space(text())=‘确定’]

6.保单列表中,某个单子,点击 “标记为特殊单”后,状态应该变成“取消标记”,但是仍是“标记为特殊单”,接口是好的,但是ui执行不可以

在这里插入图片描述

7.因为地址有误,A页面js报错,导致B页面返回A返回不了

Failed to execute ‘replaceState’ on ‘History’: A history state object with URL ‘https:/#/login’ cannot be created in a document with origin
原因:地址多了一个斜杠
在这里插入图片描述在这里插入图片描述

8.js输入日期时,点击“确定”,还是提示未输入

date_js = ‘document.getElementsByClassName(“el-input__inner”)[7].value=“2025-10-30”;’
原因:前端需要触发点击操作,才会真正输入
解决:点击“下一个月”,选择28号
在这里插入图片描述
在这里插入图片描述

9.遇到选择题时,题目是后端下发的,前端定位不到

解决:以文本为定位方式,用到兄弟节点知识
勾选:((//[normalize-space(@placeholder)=“评级”]) | (//[normalize-space(text())=“评级”])) [1]/following::[10]
输入分值时:((//
[normalize-space(@placeholder)=“满分100分,分数占比50%”]) | (//[normalize-space(text())=“满分100分,分数占比50%”])) /preceding::[1]
在这里插入图片描述

10.当遇到tabindex="-1"时定位不了元素

原因:tabindex=“-1” :表示元素是可聚焦的,可是不能经过 tab 导航来访问到该元素,能够经过js获取。
解决:通过(//*[@type=“text”])[11]定位黄色部分的input框
在这里插入图片描述

11.当页面中遇到【多个】display: none!important;

解决,用js 把选择文件显示出来
more_upload_js = “const elems = document.querySelectorAll(‘.el-upload input[type=file]’);for(let elem of elems){elem.style.setProperty(‘display’, ‘block’, ‘important’)}”
把“选择文件隐藏掉”:
const elems = document.querySelectorAll(‘.el-upload input[type=file]’)
for(let elem of elems) {
elem.style.display = ‘block’
}

在这里插入图片描述

12.当一个A页面需要另一个B页面的数据且无法通过文字类型传递时

解决:可以在web自动化中加入接口自动化
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值