appium+python自动化测试时

为什么我用driver.find_element_by_id()定位不了,用driver.find_element(By.ID,“xx”)就可以

【相关推荐】




如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

引用 皆我百晓生 小程序回复内容作答:
使用 driver.find_element_by_id()driver.find_element(By.ID, "xx") 进行元素定位的区别是不同的定位方式。

driver.find_element_by_id() 是使用 Appium 提供的 webdriver API 中的一个方法,该方法直接传入元素的 id 属性进行定位。示例代码如下:

from appium import webdriver

# 创建driver对象
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_capabilities=desired_caps)

# 使用 find_element_by_id() 方法进行元素定位
element = driver.find_element_by_id("element_id")

相反,driver.find_element(By.ID, "xx") 是使用了 selenium.webdriver.common.by 模块中的 By 类,可以通过 By 类提供的不同方式进行元素定位,包括 id、class name、xpath 等。通过 driver.find_element(By.ID, "xx") 方法,可以指定使用 id 进行定位。示例代码如下:

from appium import webdriver
from selenium.webdriver.common.by import By

# 创建driver对象
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_capabilities=desired_caps)

# 使用 find_element() 方法配合 By.ID 进行元素定位
element = driver.find_element(By.ID, "element_id")

所以你可能遇到的问题是,使用 driver.find_element_by_id() 时无法定位到元素,可能是由于元素的 id 属性不是唯一的或不正确。而使用 driver.find_element(By.ID, "xx") 方法可以通过更准确的方式进行定位。建议您检查元素的 id 属性,确保它是唯一的并且正确。

此外,确保您的 Appium 和 Python 环境配置正确,并且使用的是正确的 Appium 版本和相关依赖库。