Python 使用contains在appium(iOS)中查找屏幕元素
您好,我正在做QA,最近开始使用appium和cucumber来自动化一些测试,对此我还是新手 我成功地实现了我想要的自动化,使用了一些像这样的函数Python 使用contains在appium(iOS)中查找屏幕元素,python,ios,automated-tests,appium,qa,Python,Ios,Automated Tests,Appium,Qa,您好,我正在做QA,最近开始使用appium和cucumber来自动化一些测试,对此我还是新手 我成功地实现了我想要的自动化,使用了一些像这样的函数 def function(element_name) find_element(:xpath, '//XCUIElementTypeOther[@name="' + element_name + '"]' ).click end 这可以满足我的需要,但现在我尝试使用con
def function(element_name)
find_element(:xpath,
'//XCUIElementTypeOther[@name="' + element_name + '"]'
).click
end
这可以满足我的需要,但现在我尝试使用contains
重做相同的函数。像这样的
def function(element_name)
find_element(:xpath,
'//*[contains(text(), element_name)]'
).click
end
我得到的是无法使用给定的搜索参数在页面上找到元素
我想我只是没有正确使用
contains
,但我真的不确定。Xpath不是在Appium/xguitest中搜索元素的好方法,因为它通常太慢,并且可能无法按预期工作(您的contains案例)
相反,您应该尝试XUITest本机定位器策略:ionspredicate或iossclasschain,例如
driver.find_element_by_ios_predicate("label contains 'Some text'")
您可以在此处查看更多示例:,您使用contains的方式是正确的,唯一的问题是找不到元素。 如果XPATH不起作用,为什么不试试下面的相对路径呢
def function(element_name)
//tbody//td[contains(text(),element_name)]
谢谢,我记得在其他地方读到,使用Xpath定位元素是个坏主意,但我很难找到更好的策略。现在我设法开始使用谓词,但我仍在试图弄清楚如何使
包含起作用。你知道有什么好的资源可以用来探索使用的策略吗?我已经提供了一个在谓词表达式中使用contains文本的例子(请参阅我的答案:。我建议使用Appium desktop,因为您可以在检查应用程序时检查谓词/链策略。但更有用的是检查我提到的代码示例,因为Appium可能无法处理您将提供的每个表达式。)