我正在使用硒和鸦片来自动化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);
答案 0 :(得分:2)
我的脚本存在以下问题 1)过时的元素问题是由于另一个元素引起的,所以这不是根本原因。 2)图像路径应该是移动图像而不是在桌面上。这是一个主要问题。
答案 1 :(得分:0)
一种处理StaleElementException
的快速解决方案是,一旦遇到DOM
的{{1}},就再次在Exception
中找到相同的元素
WebElement