[当我使用用户页面对象模式时元素为空

问题描述 投票:0回答:1

我是移动自动化的新手,我面临页面对象模式的问题。当我尝试使用FindElementById查找元素时,一切正常,这是我的pop类:

public class SamplePage
    {
        private AndroidDriver<AndroidElement> _driver;

        [FindsByAndroidUIAutomator(ID = "com.miui.calculator:id/btn_1_s")]
        private readonly AndroidElement _buttonOne;

        [FindsByAndroidUIAutomator(ID = "android:id/button1")]
        private readonly AndroidElement _confirmButton;

        public SamplePage(AndroidDriver<AndroidElement> driver)
        {
            _driver = driver;
            PageFactory.InitElements(_driver, this);
        }

        public void ClickOnConfirmButton()
        {
            //AndroidElement _confirmButton = _driver.FindElementById("android:id/button1");
            _confirmButton.Click();
        }

        public void ClickOnButtonOne()
        {
            //AndroidElement _buttonOne = _driver.FindElementById("com.miui.calculator:id/btn_1_s");
            _buttonOne.Click();

        }

    }

这里是主班

using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Appium;
using OpenQA.Selenium.Appium.Enums;
using OpenQA.Selenium.Appium.Android;
using OpenQA.Selenium.Remote;
using System;
using AppiumDotNetSamples.Helper;

namespace AppiumDotNetSamples
{
    [TestFixture()]
    public class AndroidBasicInteractionsTest
    {
        private AndroidDriver<AndroidElement> driver;
        private SamplePage _samplePage;

        [SetUp()]
        public void BeforeAll()
        {
            DesiredCapabilities capabilities = new DesiredCapabilities();
            capabilities.SetCapability(MobileCapabilityType.PlatformName, "Android");
            capabilities.SetCapability(MobileCapabilityType.PlatformVersion, "7.1.2");
            capabilities.SetCapability(MobileCapabilityType.AutomationName, "UIAutomator2");
            capabilities.SetCapability(MobileCapabilityType.DeviceName, "3e52f2ee7d34");
            capabilities.SetCapability("appPackage", "com.miui.calculator");
            capabilities.SetCapability("appActivity", "com.miui.calculator.cal.CalculatorActivity");

            driver = new AndroidDriver<AndroidElement>(new Uri("http://localhost:4723/wd/hub"), capabilities, TimeSpan.FromSeconds(180));
            driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);

            _samplePage = new SamplePage(driver);
        }

        [Test()]
        public void Click()
        {
            _samplePage.ClickOnConfirmButton();
            _samplePage.ClickOnButtonOne();
        }

        [TearDown()]
        public void AfterAll()
        {
            driver.Quit();
        }

    }
}

我在做什么错?我在小米计算器应用程序上进行了测试,但较早前,在其他任何应用程序(如Google计算器)上也遇到了相同的问题。在此先感谢

c# testing appium qa appium-android
1个回答
0
投票

ClickConfirmButton方法未返回驱动程序,因此为空。

您可能想尝试类似的方法,看看它是否有效

      public AboutPage goToAboutPage()
        {
            about.Click();
            return new AboutPage(driver);
        }       

© www.soinside.com 2019 - 2024. All rights reserved.