Selenium webdriver — execute_script в браузере, в котором я сейчас нахожусь

#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 , ничего не сохраняется в переменной. Вы знаете, почему? Спасибо