搭建vs2017+c#+appium+雷电模拟器自动化测试(二)

使用uiAutomatorViewer:在sdk目录下的tools文件夹。
在这里插入图片描述
在这里插入图片描述
搭建vs2017+c#+appium+雷电模拟器自动化测试(二)_第1张图片
FindElementById和FindElementsById的区别在于前者只找一个,后者返回的是一个列表,如果没找到,前者抛出异常,后者是空列表。
再尝试一下c#中的FindElementByXPath写法:

 static void Main(string[] args)
        {
            ProgramTest pt = new ProgramTest();
            pt.beforeAll();
            Thread.Sleep(3000);
            pt.driver.FindElementByXPath("//*[@text='蓝牙']").Click();
           
            Thread.Sleep(3000);
            pt.afterAll();

        }

隐式等待: 统一对所有元素的find都等待相同的时间。
显式等待:针对每一个元素设置一个不同的时间。

跟sleep的区别在于,sleep是一直等待,而隐式或显式更加“智能”,设置的是最大时间,如果中途已经找到元素,则直接返回。
找了半天,跟python不同,c#版本的应该在

//隐式等待
pt.driver.Manage().Timeouts().ImplicitWait= TimeSpan.FromSeconds(10);
//显式等待
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
//string text = wait.Until(d => d.FindElementByXPath("//*[@text='蓝牙']").Text;
 wait.Until(d => d.FindElementByXPath("//*[@text='蓝牙']").Click();

所以,sleep是固定死的时间,不推荐,使用元素等待能第一时间操作,不会造成不必要的浪费。

using System;
using System.Threading;
using OpenQA.Selenium.Remote;


namespace 控制台自动化测试
{
    
    public class ProgramTest
        {
        public RemoteWebDriver driver;
           
            public void beforeAll()
            {
                DesiredCapabilities capabilities = new DesiredCapabilities();

                capabilities.SetCapability("deviceName", "Android Emulator");
                capabilities.SetCapability("platformName", "Android");
                capabilities.SetCapability("platformVersion", "5");
                capabilities.SetCapability("udid", "emulator-5554");
                capabilities.SetCapability("appPackage", "com.android.settings");
                capabilities.SetCapability("appActivity", ".Settings");
                capabilities.SetCapability("unicodeKeyboard", "true"); //支持中文输入
                capabilities.SetCapability("resetKeyboard", "true"); //支持中文输入,必须两条都配置


            driver = new RemoteWebDriver(new Uri("http://127.0.0.1:4723/wd/hub"), capabilities);
        }
           
            public void afterAll()
            {
                // shutdown
                driver.Quit();
            }

        }

    
    class Program
    {
        static void Main(string[] args)
        {
            ProgramTest pt = new ProgramTest();
                                       
                pt.beforeAll();
                pt.driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
                //Thread.Sleep(3000);
                pt.driver.FindElementByXPath("//*[@text='蓝牙']").Click();

                Thread.Sleep(3000);
                pt.afterAll();
                     
        }
    }
}

清除内容:.clear()
发送输入:sendkeys()
获取元素的文本内容: .text
获取元素的位置:.location 返回值字典
获取元素的大小:.size 返回值字典
搭建vs2017+c#+appium+雷电模拟器自动化测试(二)_第2张图片
获取元素的属性值: 灰色不可用的按钮有一个enabled,事实上所有属性都可以使用该方法,.GetAttribute()
搭建vs2017+c#+appium+雷电模拟器自动化测试(二)_第3张图片
不过我在使用的时候Console.WriteLine(element.GetAttribute(“checked”));
Console.WriteLine(element.GetAttribute(“name”));
这里均报错:Method is not implemented

折腾了一段时间还是没找到解决方法。。

你可能感兴趣的:(自动化测试)