当前环境:
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 timeif __name__ == '__main__':import osos.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_PATHdriver = 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 '''