我正在尝试使用nativescript-dev-appium设置自动化的e2e测试。通过Android上的Appium运行NativeScript应用程序时,我不知道如何找到TextField。我正在使用tns-core-modules v5.2.1和nativescript-angular 7.0.2。
我可以找到的唯一似乎可以通过自动化测试找到元素的NativeScript元素属性是automationText
。在iOS上设置automationText
时,可以使用Appium驱动程序的driver.findElementByAutomationId
或driver.findElementByAutomationText
查找文本字段。但是,在Android上,这些方法都不返回正确的元素。 findElementByAutomationId
根本不起作用(我认为自动化ID可能是特定于iOS的),并且findElementByAutomationText
返回了我的TextField旁边的标签,而不是TextField本身。
我的实际视图中有很多TextField,但这是基本概念:
<StackLayout>
<Label text="Name"></Label>
<TextField automationText="Name" ...></TextField>
</StackLayout>
然后,在我的e2e测试中,我想这样做
const nameInput = await driver.findElementByAutomationText("Name") // Returns the Label and not the TextField
由于findElementByAutomationText
似乎是在Android上通过Text而不是通过AutomationText搜索元素,所以在运行测试时找到TextField的最可靠方法是什么?最好是,我需要一个跨平台的解决方案,因此我不必在iOS和Android上使用其他查找策略。
答案 0 :(得分:0)
为什么不要求开发人员为给定组件设置ID定位器,并在下面的代码段中使用。
await driver.findElementById("#name");
我看到您的组件没有定位器,这也是可靠的。...