【问题标题】:What does execute_script() in Selenium doesSelenium 中的 execute_script() 有什么作用
【发布时间】:2021-03-07 07:42:38
【问题描述】:
browser.execute_script("window.open('about:blank', 'tab2');")
browser.switch_to.window("tab2")
browser.get('http://bing.com')
我正在网上搜索在python中使用selenium打开新标签的方法,ctrl + t的方法不起作用在 chrome 上,所以我偶然发现了上面的代码,但是我无法理解 'excute_script' 的作用。
【问题讨论】:
标签:
javascript
python
selenium
selenium-webdriver
webdriver
【解决方案1】:
execute_script 方法允许执行作为字符串参数传递的 JavaScript
请注意,您可以使用 arguments 将数据从 Python 代码传递到 JavaScript 代码,例如
hello = "Hello"
friends = " friends"
browser.execute_script('alert(arguments[0], arguments[1]);', (hello, friends))
【解决方案2】:
execute_script()
execute_script() 在当前窗口/框架中同步执行 JavaScript。
execute_script(script, *args)
where:
script: The JavaScript to execute
*args: Any applicable arguments for your JavaScript.
这个方法是defined as:
def execute_script(self, script, *args):
"""
Synchronously Executes JavaScript in the current window/frame.
:Args:
- script: The JavaScript to execute.
- \\*args: Any applicable arguments for your JavaScript.
:Usage:
::
driver.execute_script('return document.title;')
"""
if isinstance(script, ScriptKey):
try:
script = self.pinned_scripts[script.id]
except KeyError:
raise JavascriptException("Pinned script could not be found")
converted_args = list(args)
command = None
if self.w3c:
command = Command.W3C_EXECUTE_SCRIPT
else:
command = Command.EXECUTE_SCRIPT
return self.execute(command, {
'script': script,
'args': converted_args})['value']
示例
几个例子:
-
打开一个新的空白标签:
driver.execute_script("window.open('','_blank');")
-
要打开一个带有 url 的新 标签:
driver.execute_script("window.open('https://www.google.com');")
-
检索页面标题:
driver.execute_script('return document.title;')
-
滚动显示元素:
driver.execute_script("arguments[0].scrollIntoView(true);",element)
参考
您可以在以下位置找到一些相关的详细讨论: