通过Selenium和Python通过WebDriver实例调用execute_script()方法时,arguments [0]是什么?

时间:2018-09-11 09:53:53

标签: javascript python selenium selenium-webdriver webdriver

我正在尝试爬网我感兴趣的页面。为此,我需要从HTML中删除element的属性。我要删除“样式”。所以我从Stackoverflow找到了一些代码。(我使用的是Chrome驱动程序)

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

参数[0] 在代码中做什么?谁能具体解释参数[0] 的角色?

3 个答案:

答案 0 :(得分:1)

element = driver.find_element_by_xpath("//select[@class='m-tcol-c' and @id='searchBy']")  

在这里,element是一个web元素。

在此次通话中:

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

您正在将元素(这是一个网络元素)作为arguments[0]

removeAttribute('style')必须是JS中的方法。并使用arguments[0]来调用此方法。

答案 1 :(得分:0)

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")

答案 2 :(得分:0)

根据文档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]