Selenium Webdriver - JavaScript 执行器


Selenium 可以借助execute_script 方法执行JavaScript 命令。要执行的命令作为参数传递给此方法。我们可以在 JavaScript Executor 的帮助下执行浏览器操作,例如单击链接。

执行Javascript命令的语法如下:

b = driver.find_element_by_id("txt")
driver.execute_script ("arguments[0].click();",b)

代码实现

执行Javascript命令的代码实现如下 -

from selenium import webdriver
driver = webdriver.Chrome(executable_path='../drivers/chromedriver')
#implicit wait time
driver.implicitly_wait(5)
#url launch
driver.get("https://www.tutorialspoint.com/about/about_careers.htm")
#click with JavaScript Executor
b = driver.find_element_by_link_text("Cookies Policy")
driver.execute_script ("arguments[0].click();",b)
print('Page title after click: '+ driver.title)
#driver quit
driver.quit()

输出

Pycharm 项目

输出显示消息 - Process with exit code 0 表示上述 Python 代码执行成功。此外,单击后应用程序的页面标题(从 driver.title 方法获取) - 关于 Tutorials Point 的 Cookies 政策 - Tutorialspoint 会打印在控制台中。

执行脚本

Selenium 无法直接处理滚动功能。Selenium 可以借助execute_script 方法执行JavaScript 命令。要执行的 JavaScript 命令作为参数传递给此方法。

在execute_script方法的帮助下执行Javascript命令的语法如下:

driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

方法scrollTo 用于滚动到浏览器窗口中的某个位置。滚动高度是元素的一个属性。document.body.scrollHeight 产生网页的高度。

代码实现

借助execute_script方法执行Javascript命令的代码实现如下 -

from selenium import webdriver
driver = webdriver.Chrome(executable_path='../drivers/chromedriver')
#implicit wait time
driver.implicitly_wait(5)
#url launch
driver.get("https://www.tutorialspoint.com/index.htm")
#scroll to page bottom
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

输出

网页已滚动

输出显示网页已滚动到页面底部。