真机调试中,用Appium Inspector定位不到第三方浏览器(火狐浏览器)的元素,怎么获取对应元素xpath
根据id属性定位
表达式://*[@resource-id='id属性']
根据text属性定位
表达式://*[@text='text文本属性']
根据class属性定位
表达式: //*[@class='class属性']
通过content-desc属性定位
表达式: //*[@content-desc='文本']
driver.find_element(AppiumBy.XPATH, "//*[@resource-id='com.android.launcher3:id/tv_search']").click()
driver.find_element(AppiumBy.XPATH, "//*[@text='xxxx']").click()
driver.find_element(AppiumBy.XPATH, "//*[@class='android.widget.TextView']").click()
driver.find_element(AppiumBy.XPATH, "//*[@content-desc='xxxx']").click()
在使用 Appium Inspector 定位元素时,可能会遇到无法定位到第三方浏览器(如火狐浏览器)中的元素的情况。这是因为 Appium Inspector 默认只支持定位原生应用程序的元素,而不支持定位浏览器中的元素。
如果你想获取第三方浏览器(如火狐浏览器)中的元素的 XPath,你可以尝试以下方法:
需要注意的是,浏览器中的元素可能会动态地改变其属性或结构,因此获取到的 XPath 或其他定位信息可能会随着页面加载或操作的不同而变化。确保在获取元素定位信息后,进行验证并在代码中使用合适的等待策略来保证准确的元素定位。
希望这些方法能帮助你获取第三方浏览器中元素的定位信息。
提供一个测试范例
import unittest
from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy
capabilities = dict(
platformName='Android',
automationName='uiautomator2',
deviceName='Android',
appPackage='com.android.settings',
appActivity='.Settings',
language='en',
locale='US'
)
appium_server_url = 'http://localhost:4723'
class TestAppium(unittest.TestCase):
def setUp(self) -> None:
self.driver = webdriver.Remote(appium_server_url, capabilities)
def tearDown(self) -> None:
if self.driver:
self.driver.quit()
def test_find_battery(self) -> None:
el = self.driver.find_element(by=AppiumBy.XPATH, value='//*[@text="Battery"]')
el.click()
if __name__ == '__main__':
unittest.main()