【问题标题】:Scroll and click - Not working for both Android and iOS on Appium tool with selenium java滚动并单击 - 不适用于带有 selenium java 的 Appium 工具上的 Android 和 iOS
【发布时间】:2017-01-31 20:12:25
【问题描述】:

我正在尝试滚动,但它不适用于 Android 和 iOS,请您帮我解决这个问题。

期待您的回音。

确实尝试过使用 ScrollTO 和 ScrollToExact,因为它们现在都已被弃用,所以也尝试过:

        String str = "CADILLAC";
        driver.findElementByAndroidUIAutomator("new UiScrollable(new  UiSelector().scrollable(true).instance(0)).scrollIntoView(new  UiSelector().textContains(\""+str+"\").instance(0))").click();

还是不行。

确实浏览了许多没有人解释过的博客、视频、课程内容和材料,或者有一个关于如何处理这个问题的具体解决方案

试了下,还是报错

org.openqa.selenium.WebDriverException:

driver.findElementByAndroidUIAutomator("UiSelector().resourceId(\"current_value_tv\").text(\"All Makes\")").click();
driver.findElementByAndroidUIAutomator("UiSelector().className(\"android.widget.TextView\").text(\"AUSTIN HEALEY\")").click();

org.openqa.selenium.WebDriverException:未知的服务器端错误
处理命令时发生。 (警告:服务器没有 提供任何堆栈跟踪信息) 命令持续时间或超时:45 毫秒 构建信息:版本:'2.45.0',修订:'32a636c',时间:'2015-03-05 22:01:35' 系统信息:主机:'NCA1026471',ip:'192.168.56.1',os.name:'Windows 7',os.arch:'amd64',os.version:'6.1',java.version: '1.8.0_91' 驱动信息:io.appium.java_client.android.AndroidDriver 功能 [{app=C:\Appium\workspace\Lokesh\app\app-release.apk,
appPackage=au.com.carsguide, 可旋转=true, networkConnectionEnabled=true,noReset=true,警告={}, handleAlerts=true,deviceName=Carsguide 产品,版本=0.17.0, 平台=ANDROID,appActivity=au.com.carsguide.activity.HomeActivity, 所需= {app=C:\Appium\workspace\Lokesh\app\app-release.apk, appPackage=au.com.carsguide, appActivity=au.com.carsguide.activity.HomeActivity,noReset=true, 平台版本=5.0,浏览器名称=,平台名称=Android, deviceName=Carsguide 产品,device=Android},acceptSslCerts=true, platformVersion=21,automationName=selendroid,browserName=selendroid, 需要Screenshot=true, javascriptEnabled=true, platformName=android, 设备=安卓}] 会话 ID:e90cac4d-38aa-99fd-2dd2-70cc09a0e717 *** 元素信息:{Using=-android uiautomator, value=UiSelector().resourceId("current_value_tv").text("All Makes")} 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native 方法)

【问题讨论】:

    标签: java android ios selenium appium


    【解决方案1】:

    你可以试试下面的代码,我在设置页面上试过这个代码..

    AppiumDriver driver = new AndroidDriver(new URL(""), cap1);
    
    driver.scrollTo("About phone");
    

    传递应用页面底部的字符串。

    driver.scrollTo("Enter your value");
    

    使用适当的等待语句。

    【讨论】:

    • 我 @Deepak_Mahalingam 之前也尝试过,但不起作用。下面是我的代码,它对你有用吗?你能滚动吗?以及为什么我们需要这个“AppiumDriver driver = new AndroidDriver(new URL(""), cap1);”我正在使用公共静态 AndroidDriver 驱动程序;应该没问题吧?
    • @Test public void test() throws InterruptedException { driver.findElement(By.linkText("All Makes")).click(); driver.scrollTo("AUDI");
    • @Lokesh : 点击操作后添加等待语句,..尝试使用以下代码
    • @Lokesh :点击操作后只需添加等待语句,..尝试使用以下代码 DesiredCapabilities cap1= new DesiredCapabilities(); cap1.setCapability(“设备名称”,“设备名称”); cap1.setCapability("platformVersion", "4.4.4"); cap1.setCapability("平台名称", "Android"); cap1.setCapability("browserName", "chrome"); AppiumDriver driver = new AndroidDriver(new URL("127.0.0.1:4723/wd/hub"), cap1); driver.findElement(By.linkText("All Makes")).click(); Thread.sleep(5000); driver.scrollTo("AUDI ");
    • 仍然没有运气,基本上我想要实现的是,用户点击 Make 并获取模型列表(这是一个大列表),所以我需要滚动并在下面选择一些东西 - - 它是一个汽车列表应用程序@Deepak_Mahalingam
    【解决方案2】:

    使用 driver.swipe 而不是 driver.scroll

    http://automationbyharsh.blogspot.in/

    访问此博客以获取适用于 Android 和 IOS 的滑动方法的完整文档。

    【讨论】:

      【解决方案3】:

      scrollTO 方法在 Android 应用的 appium 中不一致。所以尝试以下。 转到模型列表页面

      尝试下面的代码 sn-p ,这是用于 Flipkart 应用程序的 它可能会对您的应用有所帮助

      driver.findElementById("com.flipkart.android:id/search_autoCompleteTextView").sendKeys("Reebok Shoes" +"\n"); 线程.sleep(8000);

          Dimension size = driver.manage().window().getSize();
          System.out.println(size);
      
          int Starty=(int)(size.height*0.90);
          int Endy=(int)(size.height*0.10);
      
          int Startx=(int)(size.width*0.50);
      
      
          WebElement ele_item = driver.findElementByClassName("android.widget.TextView");
          Thread.sleep(3000);
          do
          {
      
              List<WebElement> ele_item2 = driver.findElementsByXPath("//*[@index='2'][@text='Reebok SPEED XT Running Shoes'][@class='android.widget.TextView']");
              int size2 = ele_item2.size();
              System.out.println(size2);
      
              if(size2>0)
              {
                  driver.findElementByXPath("//*[@index='2'][@text='Reebok SPEED XT Running Shoes'][@class='android.widget.TextView']").click();
                  break;
              }
      
      
              driver.swipe(Startx, Starty, Startx, Endy, 1000);
              Thread.sleep(2000);
      
          } while(ele_item.isDisplayed()==true);
      

      【讨论】:

        猜你喜欢
        • 2016-07-23
        • 1970-01-01
        • 2015-09-23
        • 2017-08-20
        • 1970-01-01
        • 2018-03-14
        • 1970-01-01
        • 2019-01-02
        • 2015-03-19
        相关资源
        最近更新 更多