如何在与BrowserStack集成时利用CumulusCI关键字?

问题描述 投票:0回答:1

在Browserstack上启动Salesforce url时,无法理解如何利用“Open Test Browser”这是一个Cumulusci关键字?

项目背景:我正在使用Robot Framework,SeleniumLibrary和CumulusCI为Salesforce产品构建自动化框架(用于功能/回归测试),并且需要扩展自动化功能,以便在我将其与之集成的多个浏览器/操作系统上执行相同的测试BrowserStack。

实施级别详细信息:RFW和Cci已正确集成,可在Chrome或FF本地的任何临时组织中完美运行。在这里,我可以直接利用Cci关键字的全部功能,例如“Open Test Browser”,它知道组织详细信息,例如instance_url,用户名和密码,并具有访问令牌。因此登录Org是蛋糕。在这里启动SF网址并不会要求我提供电子邮件验证码。

*** Settings ***

Resource  cumulusci/robotframework/Salesforce.robot
Library  cumulusci.robotframework.CumulusCI  ${ORG}
library  SeleniumLibrary  timeout=20
library  OperatingSystem
library  Collections
library  XML
library  String
library  BuiltIn

*** Variables ***
${BSUser}  myBSkey
${BSAccessKey}  s******************b
${BSUrl}  http://${BSUser}:${BSAccessKey}@hub.browserstack.com/wd/hub

###Login Page Locators
${signOn_username}  //input[@id='username']
${signOn_password}  //input[@name='pw']
${loginButton}  //input[@name='Login']

###Home Page Locators
${SetupRecentlyViewed}  //div[@class='module-header']/div/header/h2/span

*** Test Cases ***
Connect RFW with BS
    ${instance_url}  ${username}  ${password}  Log my Org Info  #User keyword
    Setup BS Browser  ${instance_url}  ${username}  ${password}  #User keyword

*** Keywords ***
Log my Org Info
    &{OrgInfoDict}=  Get Org Info  #Cci keyword
    :FOR    ${key}    IN    @{OrgInfoDict.keys()}
    \   ${instance_url}=  Get From Dictionary    ${OrgInfoDict}    instance_url
    \   ${username}=  Get From Dictionary    ${OrgInfoDict}    username
    \   ${password}=  Get From Dictionary    ${OrgInfoDict}    password
    [Return]  ${instance_url}  ${username}  ${password}

Setup BS Browser
    [Arguments]  ${instance_url}  ${username}  ${password}
    Open Browser  url=${instance_url}  remote_url=${BSUrl}  desired_capabilities=browser:Safari,browser_version:12.0,os:OS X,os_version:Mojave,browserstack.video:True
    Maximize Browser Window
    Login to Salesforce  ${username}  ${password}

Login to Salesforce  [Arguments]  ${Username}  ${Password}
    Input Text  ${signOn_username}  ${Username}
    Input Text  ${signOn_password}  ${Password}
    Click Element  ${loginButton}
    ${Pass}=  RUN KEYWORD AND RETURN STATUS  Wait Until Page Contains Element  ${SetupRecentlyViewed}
    run keyword if  '${Pass}'=='True'  Log  "SF Home page loaded successfully"
    ...  ELSE  Fail  "SF Home page did not load successfully"


实际问题:在参考互联网上的RFW和BrowserStack集成(下面的一些链接)后,我能够连接到BS,但使用Selenium关键字“Open Browser”。我还试图获取我的所有组织信息并将其传递给BS以登录SF网址。当我这样做时,因为我使用Selenium而不是在Cci的上下文中,我的SF组织现在向我发送电子邮件验证。因此,当我在BrowserStack上运行测试时,我觉得我无法理解如何使用Cci上下文。参考:https://www.swtestacademy.com/browserstack-robotframework-integration/https://github.com/knightjacky/Robot-BrowserStack

尝试了解决方法:我尝试创建一个webdriver,然后使用“Open Test Browser”,它也不起作用,因为正如预期的那样,它没有Cci Org的上下文。

*** Keywords ***
Create a BS WebDriver
   #Some code that creates a dict...
   #${executor}=  Evaluate  str('${BSUrl}')
   #Create Webdriver  Remote  desired_capabilities=${desired_capabilities}  command_executor=${executor}
   #Open Test Browser  #Cci keyword

预期的想法:请分享一些想法,以便我如何调整我当前的实现以使用Cci关键字,而不是在与BrowserStack集成时依赖Selenium。

selenium salesforce robotframework browserstack
1个回答
0
投票

目前,salesforce关键字Open test browser不支持使用create webdriver关键字。但是,很容易复制Open test browser所做的事情。关键是使用包含正确编码凭据的URL。

来自CumulusCI库的关键字Login URL将返回适当的URL。然后,无论浏览器如何打开,您都可以在任何浏览器中使用此URL。

例:

以下示例将使用browserstack上的默认浏览器,然后登录到我的默认组织。如果您愿意,也可以将组织传递给Login URL关键字。

*** Settings ***
Resource        cumulusci/robotframework/Salesforce.robot
Suite Setup     Setup BS Browser
Suite Teardown  Delete records and close browser

*** Variables ***
${BSUser}       <your username here>
${BSAccessKey}  <your access key here>
${BSUrl}        http://${BSUser}:${BSAccessKey}@hub.browserstack.com:80/wd/hub

*** Keywords ***
Setup BS Browser
    Create Webdriver  Remote   command_executor=${BSUrl}
    ${login_url}  Login URL
    go to  ${login_url}
    Wait until loading is complete

*** Test Cases ***
Example using 'create webdriver'
    capture page screenshot    

注意:salesforce关键字Open Test Browser不仅仅是打开浏览器:它还安装了两个位置策略。如果您没有调用Open Test Browser并且想要使用这些位置策略,则需要自己注册:

Add Location Strategy  text   Locate Element By Text
Add Location Strategy  title  Locate Element By Title
© www.soinside.com 2019 - 2024. All rights reserved.