可以开一个帖子问
1.试过重写添加方法,但是,因为是内置函数,list 的属性被封装起来了(可能都是私有的了),这种情况下应该怎么做?
2.找得到什么就替换?
case 可能是指用例
这个好像一般是浏览器驱动没找到,请问在 pycharm 或者控制台可以运行吗
可以举报用户吗
请问是用正则来实现吗
automationName 是指定位方式 MobileBy.ANDROID_UIAUTOMATOR 吗? 这个值是 “-android uiautomator”
common_element_loc = (
MobileBy.ANDROID_UIAUTOMATOR, 'UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()).findObject(By.res("com.starnet.GreenHome:id/recycle_my_fun")).getChildren()')
显示错误为:
selenium.common.exceptions.InvalidSelectorException: Message: Could not parse expression `new UiSelector().UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()).findObject(By.res("com.starnet.GreenHome:id/recycle_my_fun")).getChildren()`: UiSelector has no `UiDevice.getInstance` method
应该是因为默认是 appium 以 new UiSelector() 的使用的方法的原因。暂时想到的是只能使用 xpath 方法。
当然,我两个都试过了,都不行。
因为使用 python ,所以不知道有没有报错,是看的android.support.test.uiautomator.BySelector - [android.support.test.uiautomator.BySelector](https://www.apiref.com/android-zh/android/support/test/uiautomator/BySelector.html)
上面的。确实这个函数的参数是 BySelector 的类型
后来也查了文档
UiDevice 返回的是 UiObject2 ,然后就可以使用 getChildren 了,但是试过了:
new UiDevice().findObject(new BySelector().res("com.starnet.GreenHome:id/recycle_my_fun")).getChildren()
是没有获取到的。
都不能查找到。
resourceId("com.starnet.GreenHome:id/recycle_my_fun") 指的是 new UiSelector(). resourceId("com.starnet.GreenHome:id/recycle_my_fun")
直接 resourceId("com.starnet.GreenHome:id/recycle_my_fun") 或者 className("android.view.ViewGroup") 可以查到,但是想查找的是某个元素下的多个子元素,如果直接查找子元素,会导致子元素查找的不对,因为还有别的和子元素的 id/class 相同的元素。
由于 XPATH 查找耗时比较长,所以考虑了 automator,就是 appium 中也可以用 android_automator 定位方式进行定位。
看了官方文档后, 我试过
new UiDevice().findObject(new BySelector().res("com.starnet.GreenHome:id/recycle_my_fun")).getChildren()
new UiObject().findObject(new BySelector().res("com.starnet.GreenHome:id/recycle_my_fun")).getChildren()
但是提示找不到元素,想问 getChildren 是哪个下面的呢?还是说 getChildren() 里面需要输入参数?1.是的,请问有办法吗
2.自己写指的是使用 appium 的 swipe 吗,我之前试过,觉得耗时比较长。
↑
上面有说,受不同手机的分辨率影响,宽度并不是固定的
受https://testerhome.com/topics/18197启发,我输出了句柄,发现确实有两个句柄!
切换到另一个句柄就可以了!
比如我帮第二个网页设置为 baidu.com,第三个网页为 music.163.com
正常可以打开:
但是我切换到第二个网页之后之后获取 url,却是 “music.163.com”,而且去获取百度页面的 “百度一下” 按钮,提示获取不到元素:
但是在第二个网页获取第三个网页的元素却可以获取到。
是因为我切换到第三个网页的 webview 了嘛,但是为啥我打印 contexts 只有 native 和一个 webview 呢????
百度后尝试过方法 1:appium 配置中添加 recreateChromeDriverSessions 为 True
2.切换回 native 的 context,都杀掉 chromedriver 进程。os.system('pkill -9 chromedriver')
按照比例,好像就没有规律了。
自动抓包可以和 appium 结合吗,不好意思,我没有接触过抓包。
1.数据是自己在 web 端配置的,不是固定的,这个功能就是 web 端修改数据 app 端可以发生变化。
2.从需求上来说应该不能出问题,但是,确实不同的手机分辨率不同,导致组件的 width 和 height 不同
3.测试从 web 端修改成功的数据,在 app 端是否正确显示了,但是 web 端也在跑自动化,会有失败重跑,如果重跑,是有可能出现两张一样的图出现在 app 端的,这不能说 web 端有 bug,因为这个情况是允许两张一样的图展示在 app 端的,但是如果我只是每 3 秒去看一下,那可能因为 appium 获取元素等耗时较长,然后获取的图片不确定是不是在一样的图上获取的,而且也不知道获取多少次。
我设想过这种方法,但是如何通过图像知道是几个点呢?需要先截图一个点吗, 但是不同的手机这个点的大小可能不一样,所以可能不太兼容