我正在尝试爬网我感兴趣的页面。为此,我需要从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] 的角色?
答案 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]