Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Appium 如何在原生android应用程序中获取元素的背景色_Appium_Appium Android - Fatal编程技术网

Appium 如何在原生android应用程序中获取元素的背景色

Appium 如何在原生android应用程序中获取元素的背景色,appium,appium-android,Appium,Appium Android,我正在尝试使用appium自动化应用程序。如何在Android应用程序中获取元素的背景色 我试着用 element.getCssValue("background-color") 但我面临以下例外: java.lang.ClassCastException:com.google.common.collect.Maps$TransformedEntriesMap不能转换为java.lang.String 位于org.openqa.selenium.remote.RemoteWebElement.

我正在尝试使用
appium
自动化应用程序。如何在Android应用程序中获取元素的背景色

我试着用

element.getCssValue("background-color")
但我面临以下例外:

java.lang.ClassCastException:com.google.common.collect.Maps$TransformedEntriesMap不能转换为java.lang.String 位于org.openqa.selenium.remote.RemoteWebElement.getCssValue(RemoteWebElement.java:167) 在io.appium.java_client.DefaultGenericMobileElement.getCssValue(DefaultGenericMobileElement.java:177) 在io.appium.java_client.MobileElement.getCssValue(MobileElement.java:1)中 在io.appium.java_client.android.AndroidElement.getCssValue(AndroidElement.java:1)上 在com.mahindracomviva.digibanktest.tests.corecontrollers.DynamicControlsTest.validateTimeColor(DynamicControlsTest.java:130)上 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源) 在sun.reflect.DelegatingMethodAccessorImpl.invoke处(未知源) 位于java.lang.reflect.Method.invoke(未知源) 位于org.junit.runners.model.FrameworkMethod$1.runReflectVeCall(FrameworkMethod.java:50) 位于org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 位于org.junit.runners.model.FrameworkMethod.invokeeexplosive(FrameworkMethod.java:47) 位于org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) 位于org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) 位于org.junit.internal.runners.statements.runafter.evaluate(runafter.java:27) 位于org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) 位于org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) 位于org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) 位于org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) 位于org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) 位于org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) 访问org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) 位于org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) 位于org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) 位于org.junit.runners.ParentRunner.run(ParentRunner.java:363) 位于org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) 位于org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 位于org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:538) 位于org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760) 位于org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460) 位于org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)

  • 本机元素没有css属性。您不能在本机应用程序元素上使用此方法

  • 当您的上下文为webview时,只能使用此方法getCssValue()


  • Appium不直接支持获取背景色

    您可以尝试以下解决方法:

    MobileElement elem = (MobileElement) driver.findElement(By.id("loginButton"));
    
    org.openqa.selenium.Point point = elem.getCenter();
    int centerX = point.getX();
    int centerY = point.getY();
    
    File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
    
    BufferedImage image = ImageIO.read(scrFile);
    // Getting pixel color by position x and y 
    int clr = image.getRGB(centerX,centerY); 
    int red   = (clr & 0x00ff0000) >> 16;
    int green = (clr & 0x0000ff00) >> 8;
    int blue  =  clr & 0x000000ff;
    System.out.println("Red Color value = "+ red);
    System.out.println("Green Color value = "+ green);
    System.out.println("Blue Color value = "+ blue);