web-dev-qa-db-ja.com

appiumでIDで要素を見つけることができますか

次のリンクでは、idを指定することで要素を見つけることができると述べていますが、見つけることができません。

https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/finding-elements.md

「名前」(つまり、テキスト、ラベル、または開発者が生成したID、または要素の「accessibilityIdentifier」で検索)

私は次のコードを試しました:

WebElement el = driver.findElement(By.name("txtLogin"));

txtLoginはログインボタンのIDです

次の例外が発生します。

org.openqa.Selenium.NoSuchElementException: An element could not be located on the page using the given search parameters. (WARNING: The server did not provide any stacktrace information)

appiumの要素を見つけるためのすべての方法を説明してください。

20
nilesh

次のように要素IDを使用できます。

パッケージ名 : com.example.testap

要素ID:txtLogin

次のコードを書きます-

 driver.findElement(By.id("com.example.testapp:id/txtLogin")).sendKeys("abc");
21
Mukul

Xpathも使用してidで検索できます。  enter image description here  here要素にはclass = "Android.widget.Button"およびid = "digit5"があるので、

xpath("//Android.widget.Button[contains(@resource-id,'digit5')]")

Xpathは、 http://www.software-testing-tutorials-automationで確認できる詳細については、xpath("//Android.widget.Button[contains(@resource-id,'digit5') and @text='5']")のような複数のconditionを適用する場合に最も役立ちます。 com/2015/10/ui-automator-viewer-get-Android-app.html

4
Shreekant N

Appiumを使用して要素を見つける最も一般的な方法を含むjaveコードを以下に示します。

//Find element by id and enter Hello in Text box.

    driver.findElementById("edit_name").sendKeys("Hello");
    //Find element by class name and enter Hello in Text box.

     driver.findElementByClassName("com.Android.EditText").sendKeys("Hello");
    //Find element by xpath and enter Hello in Text box.

    driver.findElementByXPath("//cass[@value='Enter Name']").sendKeys("Hello");
    //Find element by link text and enter Hello in Text box.

    driver.findElementByLinkText("Enter Name").sendKeys("Hello");

ネイティブビューとWebビューのAppiumで要素を見つける方法をもっと知りたい場合 VISIT HERE

3
anuja jain

Android APIレベルが18未満の場合、IDで要素を取得することはできません。IDが存在する場合、uiautomatorviewerでチェックインできます。その上にテキストを送信するための正しいフィールドを見つけます。

このように使用します-

public List<WebElement> getWebElementList(By by) {

        return driver.findElements(by);
    }

public void details() throws InterruptedException{

        List<WebElement> weList = null;
        weList = getWebElementList(By.tagName("Android.widget.EditView"));
        for (WebElement we : weList) {
            if(we.getText().toLowerCase().contains("login")){
                we.sendkeys("Hello");
            }
        }           
    }

お役に立てれば。

1
user2220762

Android iautomatorviewer。を使用して要素のIDを検索できます。SDKツールフォルダーD:\ Android\android-sdk\toolsに移動します。 uiautomatorviewer:開いて、アクティビティのスクリーンショットを取得し、任意の要素のID、クラス、パッケージを見つけます。

enter image description here

1
Poras Bhardwaj

Appiumバージョン1.0以降では、findElementByTagNameは非推奨です。

代わりに、修飾クラス名でfindElementByClassNameを使用する必要があります。 Android以下のようにEditTextFieldとButtonのコード:

findElements(By.className( "Android.widget.EditText"));

findElements(By.className( "Android.widget.Button"));

1
Rams_QA