【发布时间】:2019-03-15 06:28:24
【问题描述】:
我正在使用 selenium Appium 自动化应用程序 硒更高版本 Appium 1.9.1
每当应用程序启动时总是弹出权限显示成功,我可以使用自动化点击权限,但在授予权限后,appium 无法在应用程序中找到元素。
如果我在应用程序中手动单击,例如,我单击下一步按钮并再次单击后退按钮,那么 appium 代码工作正常。
谁能帮助我如何在不进行手动交互的情况下运行我的脚本
Page class
public class DriverSignUpPages {
AndroidDriver<MobileElement> driver;
public static final String packageName = "co.wapanda.android.beta";
public DriverSignUpPages(WebDriver driver){
this.driver = (AndroidDriver<MobileElement>)driver;
PageFactory.initElements(new AppiumFieldDecorator(driver), this);
}
//-Storing element for pop up related access or permission
@AndroidFindBy(id = "com.android.packageinstaller:id/permission_allow_button")
MobileElement permAlert;
public void allowAccessLocation() {
if(permAlert.isDisplayed()) {
permAlert.click();
} else {
}
}
//-Store signUp locator and performed click action
@AndroidFindBy(id = packageName+":id/btn_signup")
MobileElement signUpButton;
public void clickOnSignUpButton() {
signUpButton.click();
}
//-Store driversignup locator value and performed click action
@AndroidFindBy(id = packageName+":id/btn_driver")
MobileElement driverSignUp;
public void clickOnDriverSignUp() {
driverSignUp.click();
}
------------------------------
Test case class
public class ValidateDriverProcess {
AppLaunch applaunch;
DriverSignUpPages dprocess;
AppiumDriver<MobileElement> driver;
@BeforeMethod
public void launchApplication( ) {
applaunch = new AppLaunch();
driver = (AppiumDriver<MobileElement>) applaunch.launchApplication();
}
@Test
public void validateDriverSignupProcess() {
try {
DriverSignUpPages dprocess = new DriverSignUpPages(driver);
Thread.sleep(5000);
dprocess.allowAccessLocation();
Thread.sleep(5000);
dprocess.clickOnSignUpButton();
Thread.sleep(5000);
dprocess.clickOnDriverSignUp();
Thread.sleep(5000);
dprocess.enterSignUpDetail("test@abc.com", "9898989891", "123456");
Thread.sleep(5000);
dprocess.enterFirstAndLastNameInSignUp("Raj", "");
Thread.sleep(5000);
dprocess.enterVerificationCode("757575");
} catch (Exception e) {
e.printStackTrace();
}
}
@AfterMethod
public void closeApplication() {
driver.quit();
}
}
------------
在appium日志中显示错误
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Returning result
{"status":7,"value":"No element found"}
not able to find this line
//-Store signUp locator and performed click action
@AndroidFindBy(id = packageName+":id/btn_signup")
MobileElement signUpButton;
【问题讨论】:
-
你试过 autoGrantPermissions=true 吗?
-
@AmitJain 不,我没有尝试使用 autoGrantPermissions= true ,因为我们需要使用权限警报来处理正负两种情况。如果我手动执行操作,那么自动化代码工作正常。
-
@AmitJain 出于测试目的,我添加了 autoGrandPermissions=true 但同样的问题再次出现。找不到定位器
-
查看回复this question的三个提供的解决方案(@AmitJain 在此处建议的解决方案之一)
-
@BillHileman 感谢您分享此信息。但我仍然遇到同样的问题。在我的应用程序中首先弹出打开,所以我无法获取页面的坐标。首先我需要单击允许弹出然后我可以使用应用程序。我也用过。 driver.runAppInBackground(Duration.ofSeconds(3));但仍然存在同样的问题。你能建议任何其他方式吗
标签: java selenium-webdriver appium appium-android java-client