Appium XCUITest iOSDriver sendkeys () не работает - PullRequest
0 голосов
/ 09 мая 2019

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'

Любая помощь и предложения приветствуются

...