【问题标题】:Click method is not working with chrome emulator单击方法不适用于 chrome 模拟器
【发布时间】:2018-06-20 15:41:48
【问题描述】:

以下是我的设置的详细信息:

铬=67.0.3396.87, 铬驱动程序=2.40.565498, selenium 版本-2.53.0

下面是模拟器代码-

public ChromeOptions getChromeEmulators(int width, int height) {
    Map<String, Object> deviceMetrics = new HashMap<String, Object>();
    Map<String, Object> mobileEmulation = new HashMap<String, Object>();
    ChromeOptions chromeOptions = new ChromeOptions();
    try {
        deviceMetrics.put("width", width);           
        deviceMetrics.put("height", height);
        deviceMetrics.put("pixelRatio", 3.0);
        mobileEmulation.put("deviceMetrics", deviceMetrics);
        mobileEmulation.put("userAgent",
"Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 5 Build/JOP40D) 
AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile 
Safari/535.19");
       chromeOptions.setExperimentalOption("mobileEmulation", mobileEmulation);
    }catch (Exception e) {
        e.printStackStarce();
    }
    return chromeOptions;
}

点击选项不适用于 chrome 模拟器,但适用于以上版本的 chrome 浏览器。有人可以帮忙吗?

【问题讨论】:

  • 尝试将您的 selenium 升级到最新版本
  • 我修复了您的代码格式,但您仍然缺少其他信息。详情请阅读minimal reproducible example
  • 什么是错误,它的给予
  • 示例步骤是-'driver.findElement(By.id("j_username")).sendKeys(username); driver.findElement(By.id("j_password")).sendKeys(password); driver.findElement(By.id("login")).click(); driver.findElement(By.id("SiteNavigationIcon")).click();'它在上述步骤中单击登录按钮,但没有任何反应(登录后不显示主页)。所以在下一个元素上给出错误点击“无法定位元素”。
  • 用 JavascriptExecutor 试过了。但是在每个脚本点击方法中都需要替换为 JavascriptExecutor 脚本点击。 JavascriptExecutor js = (JavascriptExecutor) 驱动程序; js.executeScript("arguments[0].click();",element);需要尝试更新硒版本。但是,如果有任何其他方法,请告诉我。

标签: google-chrome selenium selenium-chromedriver mobile-emulator


【解决方案1】:

这是自过去几个版本以来存在的 chromedriver 已知问题。还没有修复。此时,唯一的解决方法是使用 chromerdriver : 2.33.506120 + chrome : 61.0.3163.79

参考以下错误:

https://bugs.chromium.org/p/chromedriver/issues/detail?id=2144&desc=2

https://bugs.chromium.org/p/chromedriver/issues/detail?id=2172

或者,你可以尝试 JavascriptExecutor(虽然这不是很受欢迎)

JavascriptExecutor script click. JavascriptExecutor js = (JavascriptExecutor) 
driver; js.executeScript("arguments[0].click();",element);

【讨论】:

  • 谢谢。我已将 chrome 浏览器版本降级到 65,将 chromedriver 降级到 2.38,它开始工作了。
猜你喜欢
  • 1970-01-01
  • 2012-08-29
  • 1970-01-01
  • 2020-08-19
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
  • 2014-12-02
  • 1970-01-01
相关资源
最近更新 更多