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

时间:2019-04-17 06:22:08

标签: selenium salesforce robotframework browserstack

当在Browserstack上启动Salesforce网址时,无法理解如何利用作为Cumulusci关键字的“ Open Test Browser”?

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

实施级别详细信息: RFW和Cci已正确集成,并且可以在Chrome或FF中本地的任何临时组织中完美运行。在这里,我可以直接利用Cci关键字的全部功能,例如“ Open Test Browser”,它知道组织详细信息,例如instance_url,用户名和密码,并具有访问令牌。因此,登录组织非常容易。在这里启动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"


实际问题: 在参考了Internet上的RFW和BrowserStack集成(下面的某些链接)之后,我能够使用硒关键字“ Open Browser”连接到BS。我还尝试获取所有组织信息,并将其传递给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的想法。

1 个答案:

答案 0 :(得分:0)

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

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

示例:

下面的示例将在browserstack上使用默认浏览器,然后登录到我的默认组织。如果愿意,还可以将组织传递到*** 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 关键字中。

Open Test Browser

注意:salesforce关键字Open Test Browser的作用不只是打开浏览器:它还安装了两种定位策略。如果您不致电Add Location Strategy text Locate Element By Text Add Location Strategy title Locate Element By Title ,但想使用这些位置策略,则需要自己注册:

{{1}}