TLDR:
sendKeys()
не работает в текстовом поле веб-приложения, но только с IOSDriver / XCUITest и только на странице моего веб-приложения. При запуске того же теста в симуляторе Android он отлично работает на моей странице и во всех других местах, которые я тестировал (в поиске google и ask.com), но когда я тестирую в симуляторе iOS, sendKeys()
не работает на страница моего веб-приложения, но работает везде (google и ask.com), и я понятия не имею, почему.
Файл настроек возможностей:
["Safari", "12.2", "iOS", "iPhone Simulator", "XCUITest", "1.12.1"]
Тест:
public class AppiumFieldsTest extends TestBase {
@Test(dataProvider = "appium", groups = "Appium", description = "appium fields test")
public void appiumFieldsTest(String browser, String version, String platform, String device, Method method, String automationName, String appiumVersion) throws Exception {
IOSDriver<WebElement> driver;
DesiredCapabilities caps = new DesiredCapabilities();
caps.setCapability(MobileCapabilityType.PLATFORM_NAME, platform);
caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, version);
caps.setCapability(MobileCapabilityType.DEVICE_NAME, device);
caps.setCapability(MobileCapabilityType.AUTOMATION_NAME, automationName);
caps.setCapability(MobileCapabilityType.BROWSER_NAME, browser);
caps.setCapability("autoAcceptAlerts", true);
caps.setCapability("connectHardwareKeyboard", false);
caps.setCapability("sendKeyStrategy", "oneByOne");
System.out.println(caps);
String url = "http://127.0.0.1:4723/wd/hub";
driver = new IOSDriver(new URL(url), caps);
driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);
driver.get("https://dev-app.pactsafe.com/sign?r=5cd32b47e89fc12f110449ca&s=5b2a6a597a7a3c1e4fa39c0b&signature=kto0Xohrz52ss7kc5z6t0grRbzUPsg6TrfbCbKtRuC5nQM82lNEhFL-zPgN7LaTvGG8mhuifNSc0nayvch1Rgc858Ptx8yRRD9MWJSoD4mEuHFg7LmJ-FHP~UsVEypv-gwwy-6N14BnhdkN94OZ73Kq9mBfS8QGlYKTqa76uclW0FIdnclRfA8NvK0z8CxjPcA8Luv9orw6Ye7wEuHAGqhqFURa15WeFrjrFKW9PNf6NkLVURNvOwqH4xBsfJubCkETMfjtnD4xT7PFSpgykAuU-Av0HehxCFNCYaHmyj5qvB3l9h7xgm8KKoSOO0c9VH1HpnLtwG6KAwwItawcsjg__");
String textFieldtext = "some random text";
Thread.sleep(10000);
WebElement ele = driver.findElementByXPath("//*[@data-name=\"field-5b6305f656bcff936a3c53ca\"]");
ele.click();
Thread.sleep(3000);
ele.sendKeys(textFieldtext);
Assert.assertEquals(ele.getAttribute("data-value"), textFieldtext);
...
...
...
Я пытаюсь сделать .click()
, а затем .sendKeys()
в первом поле вверху страницы, но оно не отправляет никакого текста. Если вы запустите тест, вы увидите, что поле действительно щелкается, поскольку оно становится темно-синим цветом, как и ожидалось, но затем функция sendKeys()
ничего не делает. Кроме того, при тестировании на Android клавиатура открывается на click()
, но не на iOS.
- Я испробовал все различные возможности
sendKeyStratey
и до сих пор ничего.
- Я пробовал разные симуляторы iOS и версии appium / safari, и все еще получаю те же результаты.
- Я попытался установить
connectHardwareKeyboard
на true
, а также false
, и все еще те же результаты.
- Я добавил
Thread.sleep()
промежуточные команды - nuthin
- И снова, тестирование на андроиде работает нормально на моем приложении, гугл и спрашивай, но при тестировании на iOS мое приложение не работает, но гугл и попроси сделать
Журналы appium показывают, что он действительно пытается отправить текст после успешного поиска элемента:
[HTTP] {"id":"5000","text":"some random text","value":["s","o","m","e"," ","r","a","n","d","o","m"," ","t","e","x","t"]}
[W3C (bf5882ff)] Calling AppiumDriver.setValue() with args: [["s","o","m","e"," ","r","a","n","d","o","m"," ","t","e","x","t"],"5000","bf5882ff-f1a1-4ce1-bb79-02836762cb88"]
[XCUITest] Executing command 'setValue'
Любая помощь и предложения приветствуются