当前环境:
Windows 10 + Python 3.7 + selenium==3.141.0 + urllib3==1.26.2 + Chromium 65.0.3312.0 (32 位)
在 WebDriver 中提供了执行 JavaScript 的方法:
execute_script(script, *args),JavaScript 代码以字符串的形式构建,然后传给该方法执行。
参数说明:
script: 以字符串形式构建的 JavaScript 代码;
*args: 以可变参数形式接收参数,并将参数传递给 JavaScript 代码。在 JavaScript 代码中会以数组arguments来接收 execute_script() 方法传递的参数。
from selenium import webdriver
import time
if __name__ == '__main__':
import os
os.system('chcp 65001')
os.system('taskkill /F /IM chromedriver.exe')
# Chrome 路径
CHROME_PATH = r'C:\Program Files (x86)\65.0.3312.0\chrome-win32\chrome.exe'
# ChromeDriver 路径
CHROMEDRIVER_PATH = r'C:\Program Files (x86)\65.0.3312.0\chromedriver_win32\chromedriver.exe'
options = webdriver.ChromeOptions()
# 取消 Chrome 正受到自动测试软件的控制
options.add_experimental_option("excludeSwitches", ["enable-automation"])
# 取消 请停用以开发者模式运行的扩展程序
options.add_experimental_option("useAutomationExtension", False)
# 手动指定使用的浏览器位置
options.binary_location = CHROME_PATH
driver = webdriver.Chrome(executable_path=CHROMEDRIVER_PATH, options=options)
url = 'https://www.baidu.com'
driver.get(url)
print(driver.title)
# 1 点击 按键
element = driver.find_element_by_id('su')
driver.execute_script("arguments[0].click();", element)
# 2 打开新标签页 (空白)
driver.execute_script("window.open('','_blank');")
# 2 打开新标签页 (特定网址)
new_tab_url = 'https://www.selenium.dev/zh-cn/#'
driver.execute_script(f'window.open("{new_tab_url}", "_blank");')
# 3 获取 属性 value 值
js = "document.getElementById('su').getAttribute('value')"
value = driver.execute_script("return %s" % js)
print(value)
# 退出
driver.quit()
''' 参考: https://blog.csdn.net/minzhung/article/details/102744491 https://blog.csdn.net/kinghzking/article/details/122626574 https://blog.csdn.net/minzhung/article/details/102744491 '''