#python #selenium #selenium-webdriver #webdriver #robotframework
#python #селен #selenium-webdriver #webdriver #robotframework
Вопрос:
итак, я провожу несколько тестов с Robot Framework в Firefox webdriver. Во время этих тестов мне нужно сделать что-то вроде этого:
from selenium import webdriver
from robot.api.deco import keyword
from robot.libraries.BuiltIn import BuiltIn
from SeleniumLibrary import SeleniumLibrary
@keyword('Refresh Page Menu')
def refresh_page():
# create webdriver object
driver = webdriver.Firefox()
driver.get("https://mytest.html")
# write script
script = "navigateTodiagram(305)"
# generate a alert via javascript
driver.execute_script(script)
дело в том, как я могу сделать это с помощью Интернета, в котором я сейчас провожу свои тесты на платформе Robot.
Вместо того, чтобы открывать новый браузер?
Я хочу execute_script(«navigateTodiagram (305)») в браузере, в котором я выполняю свои тесты.
У кого-нибудь есть идеи? Большое вам спасибо
Комментарии:
1. Этот рабочий процесс не поддерживается selenium.
2. Вы хотите написать свой собственный JavaScript и выполнить его в текущем сеансе Selenium?
3. @JaSON Если этот способ работает, я могу это сделать, да, я никогда не работал с javascript. Есть ли у вас какие-либо идеи о том, как это реализовать? Или какая-либо документация, которая может помочь? Спасибо
Ответ №1:
Прочитайте документ SeleniumLibrary — там есть ключевое слово именно для этого, Execute Javascript.
Execute Javascript navigateTodiagram(305)
Комментарии:
1. Большое вам спасибо, это сработало 🙂 вы знаете, могу ли я получить результат команды, если я сделаю это таким образом?
2. Да, назначьте выходные данные переменной — например
${my var}= Execute Javascript navigateTodiagram(305)
3. спасибо за ваш быстрый ответ, я это заметил 🙂 но невозможно использовать эту выходную переменную как: ` Выполнить Javascript navigateTodiagram ($ {my var})`, не так ли?
4. Этот случай также возможен; когда вы вводите
${my var}
аргумент функции js, вы должны подумать — какой тип там ожидается? Если функция принимает числа, а значение переменной всегда будет int / float , тогдаnavigateTodiagram(${my var})
будет работать, RF поместит числовое значение${my var}
переменной. Но если функция ожидает строку, тогда вы должны заключить ее в кавычки, чтобы она была допустимойnavigateTodiagram("${my var}")
и не нарушала синтаксис JS.5. Еще раз спасибо за ваш ответ, я пытался, но это не сработало. Результатом команды является значение int . Я заметил, что, делая это: $ {my var} = Выполнить Javascript MYAPP.current_navigation_hash , ничего не сохраняется в переменной. Вы знаете, почему? Спасибо