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

如何使用Robot Framework和Appium在模拟器上打开浏览器

单于庆
2023-03-14

我正在尝试配置Robot框架,以便在android模拟器中打开Chrome浏览器。我有这样的代码

*** Settings ***
Suite Setup       Set Library Search Order    SeleniumLibrary
Test Setup        Open page
Test Teardown     Close Page
Library           SeleniumLibrary
Library           Collections
Library           requests
Library           AppiumLibrary

*** Test Cases ***
Test_case_sample
    Go To    https://www.google.com
    Sleep    10s

*** Keywords ***
Open Page
    ${desired_capabilities}=    Create Dictionary
    Set to Dictionary    ${desired_capabilities}    deviceName    Demo_6_Inch
    # Set to Dictionary    ${desired_capabilities}    build    test_run
    Set to Dictionary    ${desired_capabilities}    platformName    Android
    Set to Dictionary    ${desired_capabilities}    name    test_case_Sample
    Set to Dictionary    ${desired_capabilities}    platformVersion    8.0
    Set to Dictionary    ${desired_capabilities}    deviceOrientation    portrait
    Set to Dictionary    ${desired_capabilities}    browserName    Chrome
    Set to Dictionary    ${desired_capabilities}    appiumVersion    1.7.1
    Set to Dictionary    ${desired_capabilities}    deviceType    phone
    Create Webdriver    Remote    desired_capabilities=${desired_capabilities}

Close Page
    Close All Applications

运行脚本时,出现以下错误:

11:10:39.547INFO创建远程WebDriver的实例。
11:10:40.548INFO无法连接到主机上的端口4444127.0.0.1
11:10:40.548INFO无法获取主机的IP地址:127.0.0.1
11:10:41.561FAIL URLError: urlopen错误[Errno 10061]无法建立连接,因为目标机器主动拒绝它

然后,我在本地主机4444上启动了selenium webdriver的一个实例。但这次我出现了以下错误:

WebDriverException:消息:为安装功能转发新的虚拟机会话空池时出错{appiumVersion:1.7.1,browserName:Chrome,deviceName:Demo\u 6\u Inch,deviceOrientation:portrait,deviceType:phone,name:test\u case\u Sample,platformName:android,platformVersion:8.0}Stacktrace:org.openqa.grid.web.servlet.handler.RequestHandler。进程(RequestHandler.java:117),位于org.openqa.grid.web.servlet.DriverServlet。进程(DriverServlet.java:84),位于org.openqa.grid.web.servlet.DriverServlet。doPost(DriverServlet.java:68),位于javax.servlet.http.HttpServlet。服务(HttpServlet.java:707),位于javax.servlet.http.HttpServlet。服务(HttpServlet.java:790),位于org.seleniumhq.jetty9.servlet.ServletHolder。句柄(ServletHolder.java:841),位于org.seleniumhq.jetty9.servlet.ServletHandler。doHandle(ServletHandler.java:535),位于org.seleniumhq.jetty9.server.handler.ScopedHandler。nextHandle(ScopedHandler.java:188),位于org.seleniumhq.jetty9.server.session.SessionHandler。doHandle(sessiono…[超出限制的消息内容已被删除。]位于org.seleniumhq.jetty9.server.handler.ContextHandler.doScope(ContextHandler.java:1155),位于org.seleniumhq.jetty9.server.handler.ScopedHandler。handle(ScopedHandler.java:141),位于org.seleniumhq.jetty9.server.handler.HandlerWrapper。handler(HandlerWrapper.java:132)位于org.seleniumhq.jetty9.server.server。handle(Server.java:561)位于org.seleniumhq.jetty9.Server.HttpChannel。句柄(HttpChannel.java:334),位于org.seleniumhq.jetty9.server.HttpConnection。onFillable(HttpConnection.java:251),位于org.seleniumhq.jetty9.io.AbstractConnection$ReadCallback。在org.seleniumhq.jetty9.io.FillInterest上成功(AbstractConnection.java:279)。可填充(FillInterest.java:104),位于org.seleniumhq.jetty9.io.ChannelEndPoint$2.run(ChannelEndPoint.java:124),位于org.seleniumhq.jetty9.util.thread.QueuedThreadPool。runJob(QueuedThreadPool.java:679)位于org.seleniumhq.jetty9.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:597)

我如何克服这个问题并运行模拟器?

谢谢你的建议解决这件事

共有1个答案

索寒
2023-03-14

最终找到了简单的解决方案:

*** Settings ***
Library           SeleniumLibrary
Library           Collections

*** Variables ***

*** Test Cases ***
AndroidConnection
    ${Options}    Create Dictionary    androidPackage    com.android.chrome
    ${caps}    Create Dictionary    chromeOptions    ${Options}
    Set to Dictionary    ${caps}    platformName    Android
    Set to Dictionary    ${caps}    platformVersion    8.0
    Set To Dictionary    ${caps}    deviceName    emulator-5554
    Set To Dictionary    ${caps}    browserName    Chrome
    Create Webdriver    Remote    command_executor=http://localhost:4723/wd/hub    desired_capabilities=${caps}
    go to    http://www.google.com
    Close Browser
 类似资料:
  • 我想使用Appium在iphone(5、6或6 plus)模拟器上打开firefox浏览器。我厌倦了在appium ios设置中提供绝对应用程序路径(mac machind中firefox浏览器应用程序的路径),但它不起作用。我读过关于安装Firefox OS模拟器的文章。我可以在IOS模拟器或android模拟器中作为应用程序打开firefox浏览器,还是必须使用firefox模拟器?请提供详细

  • 这可能已经被问过了,但到目前为止,我根本找不到任何详细的解释,现有的留档似乎是为某种通灵者写的,他应该知道一切。 根据本手册,我添加了容器 然后我检查它以接收容器ip 检查的端口 并尝试用这个公式在浏览器中连接 它不起作用。 我是否做错了什么,或者我应该添加一些额外的东西,比如 apache 或其他东西的容器? 编辑 据我了解,在创建一些兔子容器后,现在我需要运行 Dockerfile 来创建映像

  • 问题内容: 可能已经有人问过这个问题,但是到目前为止,我根本找不到任何详细的解释,而现有的文档似乎好像是为应该了解所有知识的通灵者编写的。 按照本手册,我添加了容器 然后我检查了它以接收容器ip 检查端口 并尝试使用此公式在浏览器中进行连接 没用 我是在做错什么,还是应该添加一些其他内容,例如用于存放Apache或其他内容的容器? 编辑 据我了解,在创建了一些兔子容器之后,现在我需要运行Docke

  • 不仅浏览器没有打开,而且测试失败,输出如下:

  • 全局基类 登录名 } 问题是,当运行此功能时,我得到了下面的错误,我不明白为什么会发生这种情况,因为它在错误的位置上没有给我任何帮助。 未定义步骤:给定I打开Chrome 未定义步骤:浏览网站时 未定义的步骤:然后我使用“user1”和“password1”登录网站

  • 有可能让selenium使用TOR浏览器吗?有人有什么代码可以复制粘贴吗?