在APPIUM中使用索引代码执行Xpath时遇到问题

时间:2019-03-30 14:17:07

标签: java appium

Appium日志补丁:

[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Returning result: {"status":32,"value":"javax.xml.transform.TransformerException: Extra illegal tokens: ')', '[', '2', ']'"}
[debug] [AndroidBootstrap] Received command result from bootstrap
[debug] [MJSONWP] Matched JSONWP error code 32 to InvalidSelectorError
[debug] [W3C (065be1bf)] Encountered internal error running command: InvalidSelectorError: javax.xml.transform.TransformerException: Extra illegal tokens: ')', '[', '2', ']'

Eclipse代码:

    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    //to click on specific object/position on a screen
    driver.findElementByXPath("//android.widget.TextView[@text='Preference']").click();
    driver.findElementByXPath("//android.widget.TextView[@text='3. Preference dependencies']").click();
    //finding element by ID
    driver.findElementById("android:id/checkbox").click();
    // 
    driver.findElementByXPath("//android.widget.RelativeLayout)[2]").click();

    driver.findElementByClassName("//android.widget.EditText").sendKeys("Hello");
    driver.findElementsByClassName("android.widget.Button").get(1).click();

直到第三行,代码都可以正常工作,但是在那之后,它停止了,并且没有转到下一行代码,并在Appium中显示了以上错误。

1 个答案:

答案 0 :(得分:2)

driver.findElementByXPath("//android.widget.RelativeLayout)[2]").click();行中

缺少括号。

如果要使用xpath转到第二个索引,则需要在启动xpath之前添加一个括号,例如:

driver.findElementByXPath("(//android.widget.RelativeLayout)[2]").click();

此外,在下一行中,您使用的是className,并且如果在标识元素时使用idclassName之类的任何标记,那么将不使用//,因此您需要更改为:

driver.findElementByClassName("android.widget.EditText").sendKeys("Hello"); 

否则它将抛出NoSuchElementException