当前位置: 首页 > 知识库问答 >
问题:

无法执行滚动appium 1.14.16在Android上使用python

祁宝
2023-03-14

这是我的密码

desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '4.4.2'
desired_caps['deviceName'] = 'Gaurav'
# Returns abs path relative to this file and not cwd
#desired_caps['app'] = os.path.abspath(os.path.join(os.path.dirname(__file__), 'ApiDemos-debug.apk'))
desired_caps['app'] = os.path.abspath(os.path.join(os.path.dirname(__file__), 'ragga.apk'))
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
driver.implicitly_wait(100)
driver.find_element_by_id('com.raaga.android:id/skip_text').click()
driver.find_element_by_id('com.raaga.android:id/landing_skip_to_raaga').click()
driver.find_element_by_name('Hindi').click()
e1 = driver.find_element_by_android_uiautomator('new UiSelector().text("Most Popular")')
e2 = driver.find_element_by_android_uiautomator('new UiSelector().text("Remix")')
print e1,e2
driver.scroll(e1, e2)

我想执行滚动,但在屏幕上它没有执行任何操作。这是android设备的屏幕截图

以下是Appium服务器日志:

信息:[调试][引导][调试]已注册的崩溃监视程序。信息:[debug][BOOTSTRAP][debug]客户端连接信息:[debug][BOOTSTRAP][debug]从客户端获取数据:{“cmd”:“action”,“action”:“wake”,“params”:{}}信息:[debug][BOOTSTRAP][debug]获取类型为action info:[debug][BOOTSTRAP][debug]获取命令操作:wake info:[debug][BOOTSTRAP][debug]返回结果:{“value”:true,“status”:0}信息:[调试]正在执行cmd:C:\sdk\platform tools\adb.exe-s 4d001f6ab48f90e9 shell“dumpsys窗口”信息:[调试]屏幕已解锁,继续。信息:[debug]将命令推送到appium工作队列:[“getDataDir”,{}]info:[debug][BOOTSTRAP][debug]从客户端获取数据:{“cmd”:“action”,“action”:“getDataDir”,“params”:{}info:[debug][BOOTSTRAP][debug]获取类型为action info:[debug][BOOTSTRAP][debug]的命令操作:getDataDir信息:[debug][BOOTSTRAP][debug]返回结果:{“value”:“/data/local/tmp”,“status”:0}info:[debug]dataDir设置为:/data/local/tmp info:[debug]将命令推送到应用程序工作队列:[“compressedLayoutHierarchy”,“CompressLayoutHierarchy”:false}]info:[debug][BOOTSTRAP][debug]从客户端获取数据:{“cmd action”,“action”:“compressedLayoutHierarchy”参数:{“compressLayout”:false}}info:[debug][BOOTSTRAP][debug]获取类型为ACTION info:[debug][BOOTSTRAP][debug]的命令操作:compressedLayoutHierarchy info:[debug][BOOTSTRAP][debug]返回结果:{“value”:false,“status”:0}info:[debug]获取设备API级别信息:[debug]执行cmd:C:\sdk\platform tools\adb.exe-s 4d001f6ab48f90e9 shell“getprop ro.build.version.sdk”信息:[调试]设备处于API级别19信息:[调试]执行cmd:C:\sdk\platform tools\adb.exe-s 4d001f6ab48f90e9 shell“am start-S-a android.intent.action.MAIN-c android.intent.category.LAUNCHER-f 0x10200000-n com.raaga.android/com.raaga.android.SplashScreen”信息:[调试]等待pkg“com.raaga.android”和活动“com.raaga.android.SplashScreen”成为焦点信息:[调试]获得焦点软件包和活动信息:[调试]执行cmd:C:\sdk\platform tools\adb.exe-s 4d001f6ab48f90e9 shell“dumpsys窗口窗口”信息:[调试]执行cmd:C:\sdk\platform tools\adb.exe-s 4d001f6ab48f90e9 shell“getprop ro.build.version.release”信息:[调试]设备已发布版本4.4.2信息:[调试]设备已启动!准备好执行命令信息:[调试]将命令超时设置为默认值60秒信息:[调试]应用程序会话已使用sessionId 2c7f4312-23aa-4b5d-8b65-AE1F01797D0信息启动:

也可以有人请帮助在滚动屏幕时,您要滚动到的元素隐藏在当前屏幕视图下面

共有2个答案

孙阳舒
2023-03-14

//创建一个方法名scrollTo或您选择的任何名称,使用下面提到的代码,它将获取要滚动的文本参数:(注意:这是java语言,您可以根据python语法进行转换)

public void scrollTo(String text)
{                
driver.findElementByAndroidUIAutomator("new UiScrollable(new UiSelector().scrollable(true).instance(0)).scrollIntoView(new UiSelector().textContains(\""+text+"\").instance(0))");
}
宰父淳
2023-03-14

首先,你可以通过以下方式做到:

//Scroll till element which contains "Views" text If It Is not visible on screen.
driver.scrollTo("Views");

// Scroll till element which contains Tabs text.
driver.scrollTo("Tabs");

这是你可以尝试的非常简单的方法。如果这对你没有帮助,你可以尝试下面的代码:

Dimension size = driver.manage().window().getSize(); 
int starty = (int) (size.height * 0.80); 
//Find endy point which is at top side of screen. 
int endy = (int) (size.height * 0.20);
//int endy = (int) (size.height * 0.10);
//Find horizontal point where you wants to swipe. It is in middle of screen width. 
int startx = size.width / 2; 

//Swipe from Bottom to Top. 
driver.swipe(startx, starty, startx, endy, 3000); 

希望这对你有帮助。

 类似资料:
  • 为了在生产中部署express Node.js api,我希望使用kubernetes,以下步骤如下: 在google cloud中创建集群 从git将代码克隆到集群 Docker build-t gcr.io/[GCLOUDID]/app:v1。 Docker pushgcr.io/[GCLOUDID]/app:v1 Kubectl运行app--image=gcr.io/[GCLOUDID]/a

  • 我想用ListView实现滚动刷新功能。此外,在同一布局文件中还有其他视图元素,如果列表为空,则会显示这些元素。这是我的布局文件。问题是,当我向下滚动,然后尝试向上滚动,而不是一直滚动到顶部,然后刷新它只是刷新那里,向上滚动是不起作用的。

  • 我是一个相当新的Android程序员,在完成了几个教程后,我开始扩展我完成的BMI计算器教程。在此过程中,我需要删除并重新安装Eclipse。我还不得不切换工作区。由于我的错误,我只能保留应用程序的。java文件。我重新创建了。xml和清单,直到现在,当我尝试单击calculate按钮时,才得到了IllegalStateException。在切换和重新创建之前,一切都很好。我正在使用Nexus G

  • 我无法在使用appium的android设备上向下滚动移动页面。我试过驾驶。滚动到(元素),它不会向下滚动到指定的元素。我尝试过使用Actions类,但我遇到了一个错误,因为“方法尚未实现”。我尝试过使用Javascript的另一种方法,但也不起作用。有人提出建议。 以下是代码:

  • 问题内容: 您好,我是学习android的新手,我正尝试在学习Android时制作一个半有用的应用程序(对我自己),基本上我是在第一时间接受有用的Java代码(ping X,端口扫描)并添加将它们添加到我的应用中,我无法弄清楚 为什么 会发生此错误,我确实认为这与代码的第77行有关,但是我想了解为什么它无法正常工作,因此下次我可以更好地帮助自己。很抱歉出现罗word的问题,我不知道什么时候闭嘴。

  • 问题内容: 每当我尝试在React中使用FontAwesome微调器图标(带有)时,都会出现以下错误: 编辑: 问题已经出现了好几次了,并且代码本身真的没有什么特别的。我一直使用微调器作为加载图标,并且每当用内容替换微调器时都会发生错误。例: ) 问题答案: 我想我知道为什么会这样。看来这与FontAwesome 5用标签替换标签的方式有关。我相信这与React处理从DOM中删除元素的方式不兼容。