You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Safari iOS模拟器中无法向手机号输入框输入内容求助

问题分析

在Sauce Labs iOS 14.3模拟器的Safari环境中,Appium无法向type="tel"的手机号输入框输入内容,其他字段(邮箱、姓名等)操作正常,Android端无此问题。结合提供的HTML代码,DOM中存在两个id="tel"的input元素,大概率是定位偏差或iOS Safari的输入交互特性导致该问题。

解决方案

1. 精准定位可见输入元素

DOM中存在重复id的input,需确保选中可见且可交互的目标元素:

// XPath筛选可见的tel输入框
element(by.xpath("//input[@id='tel' and @type='tel' and not(contains(@class, 'ng-hide'))]")).sendKeys("9876543218");

// 结合父元素定位(.mat-form-field-infix下的input)
element(by.css(".mat-form-field-infix input#tel")).sendKeys("9876543218");

2. 激活输入框后再输入

iOS Safari的tel输入框需先点击聚焦唤起数字键盘,再执行输入操作:

const telInput = element(by.css("input#tel"));
// 等待元素可交互
browser.wait(protractor.ExpectedConditions.elementToBeClickable(telInput), 10000);
telInput.click();
telInput.sendKeys("9876543218");

3. 使用setValue替代sendKeys

Appium iOS驱动对sendKeys的兼容性有限,直接设置输入框值更可靠:

element(by.css("input#tel")).setValue("9876543218");

4. 配置键盘相关Capability

添加Unicode键盘配置,避免iOS键盘交互异常:

SafariIOS: {
        appiumVersion: '1.20.1',
        deviceName: 'iPhone Simulator',
        deviceOrientation: 'portrait',
        "shardTestFiles": true,
        "maxInstances": 15,
        browserName: 'Safari',
        platformVersion: '14.3',
        platformName: 'iOS',
        unicodeKeyboard: true,
        resetKeyboard: true
}

5. 升级Appium版本

当前使用的Appium 1.20.1版本对iOS 14.x的兼容性不足,升级至1.22.0及以上稳定版本可解决部分已知兼容问题。

6. 等待Angular渲染完成

针对Angular Material输入框,需确保页面渲染稳定后再操作:

browser.waitForAngularEnabled(true);
browser.waitForAngular();

const telInput = element(by.css("input#tel"));
browser.wait(protractor.ExpectedConditions.visibilityOf(telInput), 10000);
telInput.sendKeys("9876543218");

内容的提问来源于stack exchange,提问作者raj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 03:03:21