应用页面对象模型的点击方法异常

时间:2018-08-03 22:09:24

标签: java appium pageobjects

我正在尝试使用appium自动化android联系人创建。我尝试使用具有两个页面的页面对象模型: enter image description here

enter image description here

我为两个页面创建了两个页面对象:

public class ContactAccoutChooser {
@AndroidFindBy(uiAutomator = "new UiSelector().text(\"CardDAV\").className(\"android.widget.TextView\")")
public AndroidElement cardav;

AndroidDriver driver;
public ContactAccoutChooser(AndroidDriver driver)
{
    this.driver = driver;
    PageFactory.initElements(new AppiumFieldDecorator(driver, Duration.ofSeconds(10)), this);
}

}

public class CreatContact {
AndroidDriver driver;

@AndroidFindBy(uiAutomator = "new UiSelector().text(\"Name\")")
public AndroidElement name;

@AndroidFindBy(uiAutomator = "new UiSelector().text(\"Phone\")")
public AndroidElement phone;

@AndroidFindBy(uiAutomator = "new UiSelector().text(\"Email\")")
public AndroidElement email;

@AndroidFindBy(uiAutomator = "new UiSelector().resourceId(\"android.contacts:id/menu_save\")")
public AndroidElement saveContact;

public CreatContact(AndroidDriver driver)
{
    this.driver = driver;
    PageFactory.initElements(new AppiumFieldDecorator(driver, Duration.ofSeconds(10)), this);
}

public void SaveContact()
{
    this.saveContact.click();
}

public void setName(String name) {
    this.name.click();
    this.name.sendKeys(name);
}

}

当我尝试使用它们时,我可以通过单击cardav来浏览第一页,但是在第二页上,我无法单击所提交的名称,我遇到了例外:

DesiredCapabilities capabilities = new  DesiredCapabilities();
    capabilities.setCapability("deviceName","Android");
    capabilities.setCapability("platformVersion","7.0");
    capabilities.setCapability("platformName","Android");
    capabilities.setCapability("unicodeKeyboard", "true");
    capabilities.setCapability("resetKeyboard", "true");
    capabilities.setCapability("appPackage","com.android.contacts");
    capabilities.setCapability("appActivity","com.android.contacts.activities.PeopleActivity");
    driver = new AndroidDriver (new URL("http://127.0.0.1:4723/wd/hub"),capabilities);

    driver.findElement(By.id("com.android.contacts:id/floating_action_button")).click();
    driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);

    ContactAccoutChooser chooseAccount = new ContactAccoutChooser(driver);
    chooseAccount.cardav.click();

    CreatContact createContact = new CreatContact(driver);
    createContact.setName("danny");

g.openqa.selenium.NoSuchElementException: Can't locate an element by this strategy: By.chained({By.AndroidUIAutomator: new UiSelector().text("Name")})

但是我认为在调试时我已经有了元素实例 enter image description here

0 个答案:

没有答案