如何使用 Python 中 Selenium 的 Javascript 执行器获取网页标题和 URL?
我们可以使用 Selenium 中的 Javascript 执行器获取网页的标题和 URL。Javascript 是一种用于脚本编写的语言,并在客户端(浏览器上)运行。Selenium 提供了默认方法来与 Javascript 进行交互。
语法
print(driver.execute_script('return document.title')) print(driver.execute_script('return document.URL'))
有两种使用 Javascript 的方法:
在文档根级别执行 Javascript。
在这个过程中,我们将使用定位器(类或 ID)识别元素,然后对其执行所需的动作。然后调用 execute_script() 方法,并将 Javascript 作为字符串传递给它。
语法
javas = "document.getElementsByName('user-search')[0].click();" driver.execute_script(javas)
请注意,我们使用了 getElementsByName('user-search')[0]。像 getElementsByName 和 getElementsById 这样的函数返回匹配元素的数组。因此,要定位第一个元素,使用索引[0]。但是,如果我们使用 getElementById 函数,则无需使用索引,因为那里只引用了一个匹配元素。
最后,为了执行,WebDriver 将 Javascript 语句放入浏览器,然后执行必要的动作,例如单击所需的按钮。此 Javascript 不会与网页中存在的 Javascript 混淆。
在元素级别执行 Javascript。
在这个过程中,我们将借助 WebDriver 方法(如 find_element_by_xpath 或 find_element_by_id 等)识别元素。然后对其执行必要的动作,例如单击元素。最后,调用 execute_script() 方法。此方法将 Javascript 语句和已识别的 Web 元素作为参数。
语法
userN= driver.find_element_by_id("user-search']") driver.execute_script("arguments[0].click();", userN)
Javascript 执行器还可以返回值。因此,execute_script() 可以返回值,例如,我们可以使用此概念获取页面的标题。
语法
print driver.execute_script('return document.title')
示例
使用 Javascript 获取网页标题和 URL 的代码实现。
from selenium import webdriver #browser exposes an executable file #Through Selenium test we will invoke the executable file which will then #invoke #actual browser driver = webdriver.Chrome(executable_path="C:\chromedriver.exe") # to maximize the browser window driver.maximize_window() #get method to launch the URL driver.get("https://tutorialspoint.com/index.htm") #to refresh the browser driver.refresh() # get the title of page in console print(driver.execute_script('return document.title')) # get the URL of page in console print(driver.execute_script('return document.URL')) #to close the browser driver.close()