Я хочу автоматизировать тестирование мобильных веб-сайтов на эмуляторе Android с помощью C # и Appium. Я хочу для начала автоматизировать простой тестовый сценарий:
1. Запустите браузер
2. Найдите элемент
3. Очистите
4. Отправьте ключи
У меня проблема со вторым шагом. Каждый раз, когда MSTest пытается выполнить строку FindElementById в приведенном ниже коде, я получаю сообщение об ошибке: «Элемент не может быть расположен на странице с использованием заданных параметров поиска».
[TestClass]
public class UnitTest1
{
private DesiredCapabilities _capabilities;
private AndroidDriver _driver;
public void InitializeDriver()
{
Console.WriteLine("Connecting to Appium server");
_capabilities = new DesiredCapabilities();
_capabilities.SetCapability("deviceName", "test_02");
_capabilities.SetCapability(CapabilityType.BrowserName, "Chrome");
_capabilities.SetCapability(CapabilityType.Version, "5.0.1");
_capabilities.SetCapability(CapabilityType.Platform, "Android");
//Application path and configurations
_driver = new AndroidDriver(new Uri("http://127.0.0.1:4723/wd/hub"), _capabilities);
}
[TestMethod]
public void TestMethod1()
{
InitializeDriver();
var element = _driver.FindElementById("com.android.browser:id/url");
element.Clear();
element.SendKeys(@"http://stackoverflow.com/");
}
}
Строка ввода для метода, полученного мной от UIAutomator, который показан ниже.
Я пробовал несколько комбинаций для метода ввода FindElementById:
"com.android.browser: id / url"
"идентификатор / URL"
"url"
но не повезло.
Мое окружение:
Windows 8.1
Appium 1.3.4.1
ChromeDriver 2.14.313457
Монитор устройств Android 24.0.2
3 ответа
Извините за введение в заблуждение !!! В случае тестирования веб-приложений в браузере элементы должны располагаться как обычные элементы на веб-странице (а не как некоторые классы, такие как android.widget.EditText и android.widget.Button). Так что попробуйте, например, следующее, и вы увидите результат:
var element = _driver
.findElementByXPath("//input[@id='lst-ib']");
Чтобы получить локаторы, вы должны запустить браузер на рабочем столе, открыть страницу и использовать некоторые инструменты / расширения, такие как Firebug в Firefox или Firebug Lite в браузере Chrome.
Обновить! Следующий подход не подходит для веб-тестирования:
Не могли бы вы попытаться найти элемент с помощью xpath?
@FindBy(xpath="//android.widget.EditText[contains(@resource-id, 'url')]")
Итак, в вашем случае вы можете попробовать следующее:
var element = _driver.findElementByXPath("//android.widget.EditText[contains(@resource-id, 'url')]");
Обновление: в случае тестирования веб-приложений (нативных) вам следует использовать локаторы веб-страниц вместо классов Android.
Попробуйте эти 2 утверждения:
var element = _driver.FindElement(By.Id("com.android.browser:id/url");
driver.findElementsByXPath("//*[@class='com.android.browser' and @index='1']");
Похожие вопросы
Связанные вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.