Java 如何处理手机/平板电脑中的用户身份验证弹出窗口

Java 如何处理手机/平板电脑中的用户身份验证弹出窗口,java,selenium,appium,Java,Selenium,Appium,我正在使用SeleniumWebDirver开发自动化脚本,Appium用于移动网站自动化 以前对于我自动化的网站,没有要求验证弹出窗口。 现在,对于所有较低级别的环境,都需要身份验证 那么如何处理用户身份验证弹出窗口呢 我在Android和iOS平台上使用的技术都是java、selenium和appium 有人能帮我吗。您可以获取弹出元素和按钮的xpath/id,使用这些可以对这些按钮执行操作 @findby(id="android/button1") WebElement allow_but

我正在使用SeleniumWebDirver开发自动化脚本,Appium用于移动网站自动化

以前对于我自动化的网站,没有要求验证弹出窗口。 现在,对于所有较低级别的环境,都需要身份验证

那么如何处理用户身份验证弹出窗口呢

我在Android和iOS平台上使用的技术都是java、selenium和appium


有人能帮我吗。

您可以获取弹出元素和按钮的xpath/id,使用这些可以对这些按钮执行操作

@findby(id="android/button1")
WebElement allow_button;

public void clickonAllow()
{

    allow_button.click();

}
根据要求,您可以点击按钮“允许”/“拒绝”或“接受”或“拒绝”


在web中,您可以尝试
driver.switchTo().alert().accept()
驱动程序。切换到().alert().deny()

我不久前也遇到过类似的问题,允许使用位置。 此问题应分为平台特定问题

对于iOS,它的代码更为具体,如下所示:

driver.findElement(By.xpath("//XCUIElementTypeAlert//XCUIElementTypeButton[@name='Allow']")).click(); 
(如果有,例如“允许”按钮)

对于Android,您可以将它们分解为元素,下面是我的代码中的一个代码示例:

public class Alert implements org.openqa.selenium.Alert
    @AndroidFindBy(id = "com.android.packageinstaller:id/dialog_container")
    @WithTimeout(time = 3, unit = TimeUnit.SECONDS)
    public MobileElement alertControl;

    @AndroidFindBy(id = "com.android.packageinstaller:id/permission_message")
    @WithTimeout(time = 3, unit = TimeUnit.SECONDS)
    private MobileElement content;

    @AndroidFindBy(id = "com.android.packageinstaller:id/permission_allow_button")
    @WithTimeout(time = 3, unit = TimeUnit.SECONDS)
    private MobileElement buttonAccept;

    @AndroidFindBy(id = "com.android.packageinstaller:id/permission_deny_button")
    @WithTimeout(time = 3, unit = TimeUnit.SECONDS)
    private MobileElement buttonDismiss;


    public Alert(SessionInfo sessionInfo){
        super(sessionInfo);
        PageFactory.initElements(new AppiumFieldDecorator(sessionInfo.getMobileDriver(), 3, TimeUnit.SECONDS), this)

      WaitUtils.isElementPresent(sessionInfo.getMobileDriver(),alertControl,2);

        if (!Util.areElementsLoaded(alertControl, content, buttonAccept, buttonDismiss)) {
            setLoaded(false);
        } else {
            setLoaded(true);
        }
        Validate.isScreenLoaded(getSessionInfo(), this.isLoaded());

    }


    @Override
    public void dismiss() {
        buttonDismiss.click();
        Validate.action(getSessionInfo(), "ALERT - click button 'Dismiss'");
    }

    @Override
    public void accept() {
        buttonAccept.click();
        Validate.action(getSessionInfo(), "ALERT - click button 'Accept'");
    }

    @Override
    public String getText() {
        String value = content.getText();
        Validate.action(getSessionInfo(), "ALERT - get content");
        return value;
    }

    @Override
    public void sendKeys(String s) {

    }

您好@Shiv首先感谢您的回复。如果用户身份验证是基于浏览器的,那么在访问网站时如何为其编写xpath,它会要求用户身份验证。没有输入正确的用户名和密码,我无法继续。由于此验证弹出窗口背后没有html结构,因此我无法处理它。。