一、使用Xpath定位元素:
1、定位的元素是从1开始,而非0开始
例:定位群内成员第一行第一个元素
driver.find_element_by_xpath("//XCUIElementTypeTable/XCUIElementTypeCell[1]/XCUIElementTypeButton[1]")
2、滑动页面距离在x=0,y=185时,对已知元素进行点击不能成功跳转
例:进入到页面,先滑动页面再定位一个元素进行点击操作
代码:
使用swipe
driver.execute_script("mobile: swipe", {"direction": "up"}) // 大概是height=185px,
使用dragFromToForDuration
driver.execute_script("mobile:dragFromToForDuration",{"duration":0.5,"element":None,"fromX":0,"fromY":650,"toX":0,"toY":450}) // height = 200px
driver.find_element_by_xpath("//XCUIElementTypeTable/XCUIElementTypeCell[5]").click() // 点击该元素后页面未跳转
3、页面上资源太大时,定位元素会失败()
待补充
二、关于WebDriverException错误
1、引入WebDriverException错误
from selenium.common.exceptions import WebDriverException
2、常见的错误:
NoSuchAttributeException // 元素未找到
NoSuchElementException: Message: An element could not be located on the page using the given search parameters.
WebDriverException // 操作的元素,还未加载进来吧,例如,页面元素加载完,我操作非当前屏幕的元素
WebDriverException: Message: An unknown server-side error occurred while processing the command. Original error: Invalid parameter not satisfying: point.x != INFINITY && point.y != INFINITY
3、点击一个元素时(该元素被遮挡),命令会执行成功,页面无变化
例:在iPhone6sp上的微信-通讯录-第10条数据就是被遮挡的元素
driver.find_element_by_xpath("//XCUIElementTypeTable/XCUIElementTypeCell[10]").click() // 执行不会报错
三、其他
1、除法中仅取整数部分,小数第一位大于0就向整数部分进1
使用函数:round()、str()、int()、split()
例子:int(str(round(x / y + 0.4)).split(".")[0]) // x和y中有一个是float类型