java - 在文本字段中键入后单击一个按钮,使用 Android Chrome 浏览器
问题描述
我正在尝试使用最新版本的appium和chromedriver登录网站:https : //201.247.172.70/sslvpn/Login/Login,我的代码如下:
DesiredCapabilities caps = new DesiredCapabilities ();
caps.setCapability ("deviceName", "My Phone");
caps.setCapability ("udid", "4df1b558054c9fef");
caps.setCapability ("platformName", "Android");
caps.setCapability ("platformVersion", "4.3");
caps.setCapability ("browserName", "Chrome");
caps.setCapability ("noReset", "true");
System.setProperty ("webdriver.chrome.driver", "C: \\ selenium_drivers \\ chromedriver.exe");
try {
driver = new AndroidDriver <MobileElement> (new URL ("http://127.0.0.1:4723/wd/hub"), caps);
} catch (MalformedURLException e) {
System.out.println (e.getMessage ());
}
driver.get ("https://201.247.172.70/sslvpn/Login/Login");
driver.findElement (By.id ("userName")). sendKeys ("user");
driver.findElement (By.id ("passwordDisplayed")). sendKeys ("pass");
driver.findElement (By.id ("LoginButton")). click ();
当我单击时,它会响应它不存在。但在视觉上,即使它集中在场上,也能观察到控制。还观察到使用 UI Automator Viewer。
尽管如此,我还是尝试使用以下替代方法:
在密码字段中输入文本后隐藏键盘
driver.hideKeyboard ();
通过JS清理聚光灯
JavascriptExecutor executor3 = (JavascriptExecutor) driver;
executor3.executeScript ("document.activeElement.blur ();");
将站点缩放更改为“强制”以查看控件。
JavascriptExecutor executor2 = (JavascriptExecutor) driver;
executor2.executeScript ("document.body.style.zoom = '50% ';");
打印代码以验证是否存在
System.out.println (driver2.getPageSource ());
Where the button is observed:
<! - Submit button ->
<tr>
<td id = "LoginButtonTD" align = "right">
<div id = "submitDiv">
<input type = "submit" id = "LoginButton" name = "Login" value = "Sign In" align = "absmiddle" class = "butt" />
</ div>
</ td>
</ tr> <! - submit button ->
我也用过下面这句话
driver.findElementByXPath("//android.widget.Button[contains(@text,'Sign In')]").click();
虽然控制存在,但它不接受它。
使用电脑浏览器没有问题,但我需要从移动浏览器(Android)。
解决方案
4.4.2 是非常老的安卓版本。如果您使用低于 6.0 的任何版本,则需要切换到 WEBVIEW 并执行操作。
如果您使用的是 6.0 或更高版本,则无需切换到 WEBVIEW,Android UiAutomator 会处理它。
推荐阅读
- datetime - 为什么即使未指定 strptime() 也会附加时间值?
- python - Django在markdown中包含模板
- java - 如何将 2 个不同类的 2 个不同的数组列表组合成不同类的新数组列表?
- c# - 在数组/列表/哈希表中查找空槽或在字典中查找空值的最快方法
- javascript - 为什么我的 React 应用总是无法编译?
- reactjs - 尝试访问样式化组件中的自定义道具
- spring-cloud-stream - Spring Cloud Stream kafka 生产者,生产到动态 kafka 主题
- r - 功能类似于部分 F 检验,但基于 R 中的无监督数据
- html - 同一页面中的 HTML 锚点不起作用
- python - 初始化 python Defaultdict