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