用 playwright 写自动化,遇到一个下拉框选择省市区,用过了 click,select_option,query_selector,fill 都无法点击到那个元素(css 和 absxpath 每次都是变的),求各位大佬帮忙指指路,可能涉及我的知识盲区了,另外最近用 playwright 一直觉得有点小众,问了几个朋友都没用过的,导致出了问题只能自己慢慢查,希望能有个 playwright 的自动化测试群。
可以用 playwright codegen 录制生成脚本文件,看下用的的什么方法
看下代码
@allure.step("选择城市:安徽省合肥市蜀山区")
def click_operating_click_city(self):
self.queryclick(self.operating_click_city)
operating_area = '//span[text()="完成"]/../../../../../../../div[6]/div/d1v/d1v/ul/span[text()="安徽省"]'
operating_click_city = ".is-required .el-cascader .el-input_inner"
可以用 playwright codegen 录制生成脚本文件,看下用的的什么方法
我前几天刚用过,
选择省,市、区,主要还是参照了 codegen 自动生成的代码。
def fill_addr(self, province, city, distict):
self.addr.click()
self.page.get_by_text(province, exact=True).hover()
self.page.get_by_text(city, exact=True).hover()
self.page.get_by_text(distict, exact=True).click()
调用:self.fill_addr("江苏省", "南京市", "雨花台区")
找个插件 copy 下他的定位。 这种小事还要自己手动定位,没意思。知道怎么玩就行了
用 pw 最好用它提供的定位方式,css,xpath 是最后才考虑的,这个用 get_by_role 应该很容易定位
鼠标移开下拉框就变动的话,对于这种多个下拉框需要先用鼠标悬浮,确保元素是显性的吧
edge 浏览器有个 playwright 的路径定位插件可以使用
self.page.get_by_role("dialog", name="menuitem").get_by_text(province,exact=True)
可以使用 name 定位试试看