Python var внутри selenium driver.execute_script - PullRequest
1 голос
/ 03 июля 2019

Я создаю несколько пользовательских ключевых слов для роботизированной системы и застрял в проблеме.

У меня есть следующее ключевое слово, которое работает, если я даю javascript аргумент, например:

from robot.api.deco import keyword
from robot.libraries.BuiltIn import BuiltIn
from SeleniumLibrary import SeleniumLibrary

class roboJSlib:

    @keyword('Checkbox select')
    def check(self, arg):
        driver = BuiltIn().get_library_instance('SeleniumLibrary')._current_browser()
        driver.execute_script("document.getElementById('preventivo_privacy_accetto_informative').click()")

Я хочу, чтобы скрипт получил "arg" в качестве идентификатора, который определен в фреймворке робота в качестве аргумента.

Кто-нибудь знает, возможно ли это?

Ответы [ 2 ]

1 голос
/ 03 июля 2019

Вы можете передавать аргументы методу execute_script и ссылаться на них в JavaScript с использованием синтаксиса arguments[x], поэтому в вашем случае это будет:

from robot.api.deco import keyword
from robot.libraries.BuiltIn import BuiltIn
from SeleniumLibrary import SeleniumLibrary

class roboJSlib:

    @keyword('Checkbox select')
    def check(self, arg):
        driver = BuiltIn().get_library_instance('SeleniumLibrary')._current_browser()
        driver.execute_script("document.getElementById(arguments[0]).click()", arg)
0 голосов
/ 03 июля 2019

нашел решение:

@keyword('Checkbox select')
    def check(self, arg):
        driver = BuiltIn().get_library_instance('SeleniumLibrary')._current_browser()
        driver.execute_script("document.getElementById('"+arg+"').click()")

Спасибо всем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...