在做测试脚本的时候,比如我知道一个元素的坐标(107,30)和名称,但是我只知道怎么用查找名字的方法进行点击事件,我怎么用这个 “点击元素坐标的方式” 代替下面这种 “查找元素名字的方式” 进行点击事件啊!
.elementByXPath('//XCUIElementTypeStaticText[@name="小学校 1年"]')
.click()
self.driver.tap([(X, Y)])
X,Y 分别为横坐标,和纵坐标
appium 获取信息类 API
(1)获取默认系统语言对应的 Strings.xml 文件内的数据。
get_app_string()
(2)查找某一个语言环境对应的字符串文件 Strings.xml 内数据。
get_app_string(String language)
(3)获取当前 activity,比如(.ApiDemos)
current_activity()
App 安装与卸载类 API
(1)根据 bundleId 来判断该应用是否已经安装
is_app_installed(String bundleId)
(2)安装 app,appPath 为应用的本地路径
install_app(String appPath)
(3)卸载 app.bundleId 在 android 中代表的是包名,而在 iOS 中有专门的 bundleId 号。
remove_app(String bundleId)
(4)关闭应用,其实就是按 home 键把应用置于后台
close_app()
(5)启动应用
launch_app()
(6)先 closeApp 然后在 launchAPP
reset_app()
文件操作类 API
(1)将字符数组用 64 位格式写到远程目录的某个文件中。也可以理解为把本地文件 push 到设备上。
push_file(String remotePath, byte[] base64Data)
(2)将设备上的文件 pull 到本地硬盘上
pull_file(String remotePath)
(3)将设备上的文件夹 pull 到本地硬盘上,一般远程文件为/data/local/tmp 下的文件。
pull_folder(String remotePath)
设置相关类 API
(1)设置手机的网络连接状态,可以开关蓝牙、wifi、数据流量。通过 NetworkConnectionSetting 中的属性来设置各个网络连接的状态。
set_network_connect(NetworkConnectionSetting connection)
(2)得到当前网络的状态
get_network_connection()
用户操作类 API
(1)ios 隐藏键盘
hide_keyboard()
(2)隐藏键盘,只能用于 ios 上。
hide_keyboard(String strategy, String keyName)
(3)按下某个键,具体哪个键由 key 值决定,key 值定义在 AndroidKeyCode 类中
send_key_event(int key)
(4)执行一个 touch 动作,该 touch 动作是由 TouchAction 封装的。
perform_touchAction(TouchAction touchAction)
(5)点击 element 控件中心点按下,duration*5 毫秒秒后松开,如此重复 fingers 次。
tap(int fingers, WebElement element, int duration)
(6)点击 (x,y) 点按下,duration*5 毫秒后松开,如此重复 fingers 次。
tap(int fingers, int x, int y, int duration)
(7)从 (startx,starty) 滑到(endx,endy),分 duration 步滑,每一步用时是 5 毫秒。
swipe(int startx, int starty, int endx, int endy, int duration)
(8)2 个手指操作控件,从对角线向中心点滑动。
pinch(WebElement el)
(9)以(x,y)为基准,计算得出(x,y-100),(x,y+100) 两个点,然后 2 个手指按住这两个点同时滑到(x,y)
pinch(int x, int y)
(10) 与 pinch(el) 的动作刚好相反。两个手指由控件的中心点慢慢向控件的左顶点后右底点滑动。
zoom(WebElement el)
(11) 和 pinch(x,y) 相反。两个手指从(x,y)点开始向(x,y-100)和(x,y+100)滑动。
zoom(int x, int y)
(12) 锁屏多少秒后解锁
lock_screen(int seconds)
(13) 模拟摇晃手机
shake()
(14) 滚动到某个 text 属性为指定的字符串的控件
scroll_to(String text)
(15) 滚动方向由 element1 到 element2
scroll(element1,element2)
(16) 滚动到某个 text 属性包含传入的字符串的控件
scroll_to_exact(String text)
(17) 设置上下文
context(String name)
(18) 可用上下文
get_context_handles()
(19) 当前上下文
get_context()
(20) 设置屏幕横屏或者竖屏
rotate(ScreenOrientation orientation)
(21) 获取当前屏幕的方向
get_orientation()
获取控件类 API
seleniumdriver
find_element_by_id
find_elements_by_id
find_element_by_name
find_elements_by_name
find_element_by_link_text
find_elements_by_link_text
find_element_by_partial_link_text
find_elements_by_partial_link_text
find_element_by_tag_name
find_elements_by_tag_name
find_element_by_xpath
find_elements_by_xpath
find_element_by_class_name
find_elements_by_class_name
find_element_by_css_selector
find_elements_by_css_selector
appiumdriver
find_element_by_ios_uiautomation
find_elements_by_ios_uiautomation
find_element_by_android_uiautomator
find_elements_by_android_uiautomator
find_element_by_accessibility_id
find_elements_by_accessibility_id
AppiumDriver 的辅助类
主要针对手势操作,比如滑动、长按、拖动等。TouchAction 的原理是讲一系列的动作放在一个链条中,然后将该链条传递给服务器。服务器接受到该链条后,解析各个动作,逐个执行。
TouchAction()
(1)在控件上执行 press 操作
press(WebElement el)
(2)在坐标为(x,y)的点执行 press 操作
press(int x, int y)
(3)在控件 el 的左上角的 x 坐标偏移 x 单位,y 左边偏移 y 单位的坐标上执行 press 操作。
press(WebElement el, int x, int y)
(4)释放操作,代表该系列动作的一个结束标志。
release()
(5)以 el 为目标,从另一个点移动到该目标上
move_to(WebElement el)
(6)以(x,y)点为目标,从另一个点移动到该目标上
move_to( int x, int y)
(7) 在控件的中心点上敲击一下
tap(WebElement el)
(8) 在(x,y)点轻击一下
tap(int x, int y)
(9) 以控件 el 的左上角为基准,x 轴向右移动 x 单位,y 轴向下移动 y 单位。在该点上轻击。
tap(WebElement el, int x, int y)
(10) 代表一个空操作,等待一段时间
wait_action()
(11) 等待 ms 秒
wait_action(int ms)
(12) 控件长按
long_press(WebElement el)
(13) 点长按
long_press(int x, int y)
(14)偏移点长按
long_press(WebElement el, int x, int y)
(15)取消执行该动作
cancel()
先查找元素,找到元素后获取坐标,然后用坐标点击方法咯
我想请教一下,如何获得页面上任一元素的坐标?