Что такое аргументы [0] при вызове метода execute_script () через экземпляр WebDriver через Selenium и Python? - PullRequest
0 голосов
/ 11 сентября 2018

Я пытаюсь сканировать страницы, которые меня интересуют. Для этого мне нужно удалить атрибут элемента из HTML.«стиль» - это то, что я хочу удалить.Поэтому я нахожу некоторые коды из Stackoverflow. (Я использую Chrome для драйвера)

element = driver.find_element_by_xpath("//select[@class='m-tcol-c' and @id='searchBy']")
driver.execute_script("arguments[0].removeAttribute('style')", element)

Что делает arguments [0] в коде?Может ли кто-нибудь конкретно объяснить роли аргументов [0] ?

Ответы [ 3 ]

0 голосов
/ 11 сентября 2018

arguments - это то, что вы передаете из Python в JavaScript , который вы хотите выполнить.

driver.execute_script("arguments[0].removeAttribute('style')", element) 

означает, что вы хотите «заменить» arguments[0] на WebElement, хранящийся в переменной element.

Это так же, как если бы вы определили этот элемент в JavaScript:

driver.execute_script("document.querySelector('select.m-tcol-c#searchBy').removeAttribute('style')")

Вы также можете передать больше аргументов как

driver.execute_script("arguments[0].removeAttribute(arguments[1])", element, "style")
0 голосов
/ 11 сентября 2018

Согласно документации execute_script() метод синхронно выполняет JavaScript в текущем окне / фрейме и определяется как:

execute_script(script, *args)
    Synchronously Executes JavaScript in the current window/frame.
    Where:
        script: The JavaScript to execute.
        *args: Any applicable arguments for your JavaScript.
  • Согласно приведенному вами примеру:

    element = driver.find_element_by_xpath("//select[@class='m-tcol-c' and @id='searchBy']")
    driver.execute_script("arguments[0].removeAttribute('style')", element)
    
  • arguments[0].removeAttribute('style'): относится кскрипт, который будет выполняться синхронно методом execute_script(), где:

    • arguments[] будет ссылкой на элемент, который будет передан через *args
    • removeAttribute() - это метод, который нужно выполнить.
    • style - это атрибут, по которому будет вызываться метод removeAttribute().
  • element является ссылкой WebElement , который передается в arguments[0]
0 голосов
/ 11 сентября 2018
element = driver.find_element_by_xpath("//select[@class='m-tcol-c' and @id='searchBy']")  

Здесь element - это веб-элемент.

и в этом звонке:

driver.execute_script("arguments[0].removeAttribute('style')", element)  

Вы передаете элемент (который является веб-элементом) как arguments[0]

removeAttribute('style') должен быть методом в JS. и используя arguments[0], вы вызываете этот метод.

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