我们已经遇到了棉花糖Android设备的问题,该应用会显示权限弹出窗口,要求用户允许或拒绝。要在我们的自动化测试用例中处理此问题。所以这篇文章将解释我们如何用简单的代码来处理这个问题。
查看下面我们在其中调用的测试用例示例 allowAppPermission() 单击每个应用程序权限弹出窗口的方法。让我们看看该方法内部如何工作。在此方法中,我们添加了一个while循环,直到获得“允许应用程序许可”按钮。为了找到允许按钮,我们使用了最新的unibet Java客户端提供的MobileBy api。
影片教学-
影片教学-
import java.net.MalformedURLException; import java.net.MalformedURLException; import java.net.URL; import java.util.concurrent.TimeUnit; import org.junit.After; import org.junit.Before; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.remote.CapabilityType; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.remote.RemoteWebDriver; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; public class WaitTests { WebDriver driver; @Before public void setUp() throws MalformedURLException { DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability("deviceName", "XT1562"); capabilities.setCapability(CapabilityType.BROWSER_NAME, "Android"); capabilities.setCapability(CapabilityType.VERSION, "6.0.1"); capabilities.setCapability("platformName", "Android"); driver = new RemoteWebDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS); } @Test public void testFirst() { alllowAppPermission(); driver.findElement(By.name("Login")).click(); driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS); } @After public void End() { driver.quit(); } public void allowAppPermission(){ while (driver.findElements(MobileBy.xpath("// * [@ class ='android.widget.Button'][2]")).size()>0) { driver.findElement(MobileBy.xpath("// * [@ class ='android.widget.Button'][2]")).click(); } } }
希望这个对你有帮助。请在下面的评论部分中分享您的反馈,并在社交媒体上关注我,以获取最新的帖子更新。
该评论已被博客管理员删除。
回复删除您好...我在项目中使用的相同代码无法正常工作..请帮助。
回复删除据我说,警报刚出现在屏幕上之前调用的方法allowAppPermission()。万一您需要增加一点等待时间以使元素出现。
回复删除如果它不起作用。请确认上述定位器工作正常。
您好,在接受所有应用程序权限后,我可以'您无法在下一个窗口中导航吗?为什么?
回复删除你好
回复删除就我而言'MobileBy无法解析'错误产生。请帮忙
使用所需的功能.......
回复删除abilities.setCapability("autoGrantPermissions",true);它适用于我在标签和移动设备中使用。
我正在使用Tablet设备上的appium自动化WebApplication。当我打开浏览器并访问URL时,我们正在使用Google Maps,我会弹出允许访问或阻止的位置访问弹出窗口,但是我无法通过硒代码对该弹出窗口执行任何操作。您能帮我解决问题吗?
回复删除尝试在此代码上添加适当的等待。
回复删除嗨,我正在使用Protractor运行我的Web应用程序。当我尝试上传文件时,允许拒绝弹出窗口来访问相机。我尝试使用"autoGrantPermissions",是的,但这对我没有帮助。我也无法找到弹出窗口。您能帮我解决问题吗?
回复删除嗨,我需要对此代码进行一些解释
回复删除driver.findElements(MobileBy.xpath("//*[@class='android.widget.Button'][2]")
对于你,你允许两个弹出窗口's所以您使用了button [2],在我的情况下只有一个弹出窗口,所以我没有使用[2],但是它在while循环中连续运行。它不会出来。
嗨Anuja
回复删除非常好的教程。我能够关闭警报消息,但是现在我的脚本无法继续。单击“允许”按钮后,他们被卡住了。
请添加此功能,它将解决问题。
回复删除abilities.setCapability("autoGrantPermissions", "true");
abilities.setCapability("autoAcceptAlerts", "true");
我们可以从中制作apk吗?
回复删除此评论已被作者删除。
回复删除谢谢,这对您有所帮助。
回复删除