2017-12-06 34 views
1

こんにちは、私はQAを行っています。最近、appiumとキュウリを使っていくつかのテストを自動化しています。を使用してappium(iOS)の画面要素を検索する

私はこのようないくつかの関数を使用して自動化したいものに成功しました。

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正しい方法を使用していないと思うが、私は本当にわからない。

答えて

2

のXpathは、それはしばしば遅すぎるであり、あなたはそれが(含まれているとあなたのケース)を動作するように期待通りに動作しない場合がありますようAppium/XCUITest内の要素を検索するための良い方法ではありません。 iOSNsPredicateまたはiOSClassChain、例えば:

は、代わりにあなたはXCUITestネイティブロケータ戦略を試してみてください

driver.find_element_by_ios_predicate("label contains 'Some text'") 

あなたがここでより多くの例を確認することができます:python client testsjava client tests

+0

ありがとうございました。私はXpathを使用して要素を配置することは悪い考えでしたが、より良い戦略を見つけるのは難しいと思いました。今は述語を使い始めることができましたが、私はまだ 'contains'を動作させる方法を見つけようとしています。あなたは、使用する戦略について探求するための良いリソースを知っていますか? –

+0

私は既に述語式の中にcontainsテキストを使用する例を提供しました(私の答え:にはが含まれています)。読むには:https://developer.apple.com/documentation/foundation/nspredicate。私はあなたのアプリを調べている間、述語/連鎖戦略をチェックできるようにAppium-desktopを使うことを提案します。しかし、もっと便利なのは、Appiumが提供するすべての式を処理しない可能性があるため、私が言及したコード例をチェックすることです – dmle

0

使用している方法が含まれているが唯一の問題は、その要素を見つけることはありませんが、正しいです。 XPATHが機能しない場合は、相対パスで試してみてください。下にある

def function(element_name) 
    //tbody//td[contains(text(),element_name)] 
関連する問題