使用硒上传图片时Chrome崩溃了,如何解决?

时间:2018-10-29 13:51:51

标签: java selenium appium appium-android

我正在使用硒和鸦片来自动化Android手机上的移动Chrome浏览器。 我已经通过

连接了真正的android设备
  

adb connect {手机的IP地址}

在真实设备上的android chrome浏览器上的所有其他测试用例均成功运行。但是对于图像上传,浏览器崩溃了。

我正在使用以下代码上传图片

 public class UploadPhotoPage extends TestBase {

    // Page Factory Object Repository
    @FindBy(id = "file-upload")
    WebElement fileUpload;

    // Initialising the page object
    public UploadPhotoPage() {
    PageFactory.initElements(driver, this);
    }

    // Actions
    public void uploadphotos(String imagePath) throws AWTException, InterruptedException {
    fileUpload.sendKeys(imagePath);
    }
}

图像路径位于Windows机器上,其中appium服务器和eclipse正在执行测试用例。

这是怎么了?

appium服务器上的错误日志:

  

[W3C]驱动程序代理处于活动状态,正在通过HTTP代理传递请求   [JSONWP代理]将'/wd/hub/session/34e405a5-1bad-4711-9e1c-956e2d7391f6/element/0.6272871137575717-18/text'匹配到命令名称'getText'   [JSONWP代理]使用正文:{}将[GET /wd/hub/session/34e405a5-1bad-4711-9e1c-956e2d7391f6/element/0.6272871137575717-18/text]代理到[GET http://127.0.0.1:8003/wd/hub/session/adb1415c77099095355e619b36dc5e1e/element/0.6272871137575717-18/text]   [JSONWP代理]获得状态为200的响应:“ {\” sessionId \“:\” adb1415c77099095355e619b36dc5e1e \“,\”状态\“:10,\”值\“:{\”消息\“:\”陈旧元素引用:元素未附加到页面文档\ n(会话信息:chrome = 70.0.3538.64)\ n(驱动程序信息:chromedriver = 2.42.591088(7b2b2dca23cca0862f674758c9a3933e685c27d5),平台= Windows NT 6.1.7601 SP1 x86_64)\“}} ”   [W3C]遇到内部错误运行命令:ProxyRequestError:无法将命令代理到远程服务器。原始错误:对/wd/hub/session/34e405a5-1bad-4711-9e1c-956e2d7391f6/element/0.6272871137575717-18/text的请求失败   [W3C] at JWProxy.proxy $(C:\ Users \ chintamanim \ AppData \ Local \ Programs \ Appium \ resources \ app \ node_modules \ appium \ node_modules \ appium-base-driver \ lib \ jsonwp-proxy \ proxy.js: 182:13)   tryCatch上的[W3C](C:\ Users \ chints \ AppData \ Local \ Programs \ Appium \ resources \ app \ node_modules \ appium \ node_modules \ babel-runtime \ regenerator \ runtime.js:67:40)   GeneratorFunctionPrototype.invoke上的[W3C] [作为_invoke](C:\ Users \ chints \ AppData \ Local \ Programs \ Appium \ resources \ app \ node_modules \ appium \ node_modules \ babel-runtime \ regenerator \ runtime.js:315:22 )   [W3C],位于GeneratorFunctionPrototype.prototype。(匿名函数)[下一个](C:\ Users \ chints \ AppData \ Local \ Programs \ Appium \ resources \ app \ node_modules \ appium \ node_modules \ babel-runtime \ regenerator \ runtime。 js:100:21)   GeneratorFunctionPrototype.invoke上的[W3C](C:\ Users \ chints \ AppData \ Local \ Programs \ Appium \ resources \ app \ node_modules \ appium \ node_modules \ babel-runtime \ regenerator \ runtime.js:136:37)   [W3C]位于   [MJSONWP]将JSONWP错误代码10与StaleElementReferenceError相匹配   [HTTP] <-GET /wd/hub/session/34e405a5-1bad-4711-9e1c-956e2d7391f6/element/0.6272871137575717-18/text 404 95 ms-2004   [HTTP]   [HTTP]-> GET /wd/hub/session/34e405a5-1bad-4711-9e1c-956e2d7391f6/element/0.6272871137575717-18/text   [HTTP] {}   [W3C]驱动程序代理处于活动状态,正在通过HTTP代理传递请求   [JSONWP代理]将'/wd/hub/session/34e405a5-1bad-4711-9e1c-956e2d7391f6/element/0.6272871137575717-18/text'匹配到命令名称'getText'   [JSONWP代理]使用正文:{}将[GET /wd/hub/session/34e405a5-1bad-4711-9e1c-956e2d7391f6/element/0.6272871137575717-18/text]代理到[GET http://127.0.0.1:8003/wd/hub/session/adb1415c77099095355e619b36dc5e1e/element/0.6272871137575717-18/text]   [JSONWP代理]获得状态为200的响应:“ {\” sessionId \“:\” adb1415c77099095355e619b36dc5e1e \“,\”状态\“:10,\”值\“:{\”消息\“:\”陈旧元素引用:元素未附加到页面文档\ n(会话信息:chrome = 70.0.3538.64)\ n(驱动程序信息:chromedriver = 2.42.591088(7b2b2dca23cca0862f674758c9a3933e685c27d5),平台= Windows NT 6.1.7601 SP1 x86_64)\“}} ”   [W3C]遇到内部错误运行命令:ProxyRequestError:无法将命令代理到远程服务器。原始错误:对/wd/hub/session/34e405a5-1bad-4711-9e1c-956e2d7391f6/element/0.6272871137575717-18/text的请求失败   [W3C] at JWProxy.proxy $(C:\ Users \ chints \ AppData \ Local \ Programs \ Appium \ resources \ app \ node_modules \ appium \ node_modules \ appium-base-driver \ lib \ jsonwp-proxy \ proxy.js: 182:13)   tryCatch上的[W3C](C:\ Users \ chints \ AppData \ Local \ Programs \ Appium \ resources \ app \ node_modules \ appium \ node_modules \ babel-runtime \ regenerator \ runtime.js:67:40)   GeneratorFunctionPrototype.invoke上的[W3C] [作为_invoke](C:\ Users \ chints \ AppData \ Local \ Programs \ Appium \ resources \ app \ node_modules \ appium \ node_modules \ babel-runtime \ regenerator \ runtime.js:315:22 )   [W3C],位于GeneratorFunctionPrototype.prototype。(匿名函数)[下一个](C:\ Users \ chints \ AppData \ Local \ Programs \ Appium \ resources \ app \ node_modules \ appium \ node_modules \ babel-runtime \ regenerator \ runtime。 js:100:21)   GeneratorFunctionPrototype.invoke上的[W3C](C:\ Users \ chints \ AppData \ Local \ Programs \ Appium \ resources \ app \ node_modules \ appium \ node_modules \ babel-runtime \ regenerator \ runtime.js:136:37)   [W3C]位于   [MJSONWP]将JSONWP错误代码10与StaleElementReferenceError相匹配   [HTTP] <-GET /wd/hub/session/34e405a5-1bad-4711-9e1c-956e2d7391f6/element/0.6272871137575717-18/text 404 135 ms-2004

以下是我已经设置的功能

        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability(CapabilityType.BROWSER_NAME, "");
        capabilities.setCapability("deviceName", "ONEPLUS A5010");
        capabilities.setCapability("platformVersion", "8.1.0");
        capabilities.setCapability("platformName", "Android");
        capabilities.setCapability("browserName", "Chrome");
        capabilities.setCapability("deviceId", "XXX.XX.XX.XXX:5555");
        capabilities.setCapability("autoGrantPermissions", true);

2 个答案:

答案 0 :(得分:2)

我的脚本存在以下问题 1)过时的元素问题是由于另一个元素引起的,所以这不是根本原因。 2)图像路径应该是移动图像而不是在桌面上。这是一个主要问题。

答案 1 :(得分:0)

一种处理StaleElementException的快速解决方案是,一旦遇到DOM的{​​{1}},就再次在Exception中找到相同的元素

WebElement