当在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的想法。
答案 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}}