Невозможно понять, как использовать "Open Test Browser", который является ключевым словом Cumulusci, при запуске URL-адреса Salesforce в Browserstack?
История проекта:
Я создаю инфраструктуру автоматизации (для функциональных / регрессионных тестов) для продукта Salesforce, используя Robot Framework, SeleniumLibrary и CumulusCI, и мне необходимо расширить возможности автоматизации для выполнения одних и тех же тестов в нескольких браузерах / ОС, для которых я интегрирую его с BrowserStack.
Детали уровня реализации:
RFW и Cci интегрированы правильно и отлично работают на любой локальной организации в Chrome или FF. Здесь я могу напрямую использовать всю мощь ключевых слов Cci, таких как «Open Test Browser», который знает подробности организации, такие как instance_url, имя пользователя и пароль, и имеет токен доступа. Таким образом, вход в Org является легкой прогулкой. При запуске 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"
Актуальная проблема:
После ссылки на интеграцию RFW и BrowserStack в Интернете (некоторые ссылки ниже) я смог подключиться к BS, но с помощью ключевого слова Selenium «Открыть браузер». Я также попытался получить всю свою информацию об организации и передать ее в BS для входа в SF-URL. Когда я делаю это, потому что я использую Selenium, а не в контексте Cci, моя SF-организация теперь выдает мне подтверждение по электронной почте. Следовательно, я чувствую, что не понимаю, как использовать контекст Cci при запуске тестов на BrowserStack.
Ссылка: https://www.swtestacademy.com/browserstack-robotframework-integration/ и https://github.com/knightjacky/Robot-BrowserStack
Обойдены обходные пути:
Я попытался создать веб-драйвер и затем использовать «Открыть тестовый браузер», который также не работает, потому что, как и ожидалось, он не имеет контекста 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 и не полагаться на Selenium при интеграции с BrowserStack.