WebDriver类是 Selenium WebDriver 提供的用于控制浏览器的核心类之一,它提供了许多属性和方法来管理浏览器会话、导航到不同的网页、定位和操作页面元素等。下面分别归纳其属性和方法:
**属性:**
-
`capabilities`: 返回当前会话的浏览器的配置。
-
`desired_capabilities`: 返回用于启动浏览器的配置。
-
`session_id`: 返回当前会话的唯一标识符。
-
`title`: 返回当前页面的标题。
-
`current_url`: 返回当前页面的 URL。
-
`page_source`: 返回当前页面的 HTML 源代码。
-
`current_window_handle`: 返回当前窗口的句柄。
-
`window_handles`: 返回所有窗口的句柄列表。
**方法:**
-
`get(url)`: 打开指定 URL 的页面。
-
`back()`: 在浏览器历史记录中后退一步。
-
`forward()`: 在浏览器历史记录中前进一步。
-
`refresh()`: 刷新当前页面。
-
`close()`: 关闭当前窗口。
-
`quit()`: 退出 WebDriver 并关闭所有窗口。
-
`execute_script(script, *args)`: 在当前页面执行 JavaScript 脚本。
-
`execute_async_script(script, *args)`: 在当前页面异步执行 JavaScript 脚本。
-
`switch_to`: 切换到其他上下文,如 iframe 或窗口。
-
`implicitly_wait(time_to_wait)`: 设置隐式等待时间。
-
`set_page_load_timeout(time_to_wait)`: 设置页面加载超时时间。
-
`set_script_timeout(time_to_wait)`: 设置执行 JavaScript 脚本的超时时间。
-
`add_cookie(cookie_dict)`: 添加 cookie 到当前会话。
-
`delete_cookie(name)`: 删除当前会话中的指定 cookie。
-
`delete_all_cookies()`: 删除当前会话中的所有 cookie。
-
`get_cookie(name)`: 获取当前会话中指定名称的 cookie。
-
`get_cookies()`: 获取当前会话中的所有 cookie。
-
`maximize_window()`: 最大化当前窗口。
-
`minimize_window()`: 最小化当前窗口。
-
`fullscreen_window()`: 将当前窗口设置为全屏。
-
`back()`: 返回上一个页面。
-
`forward()`: 前进到下一个页面。
-
`find_element(by, value)`: 根据定位策略和值查找单个元素。
-
`find_elements(by, value)`: 根据定位策略和值查找多个元素。
示例:
python
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
try:
driver.get("https://www.hao123.com/")
# print('*****driver_type',type(driver)) # driver_type <class 'selenium.webdriver.chrome.webdriver.WebDriver'>
input_elements = driver.find_elements(By.TAG_NAME, "input")
# print('*****input_elements',type(input_elements)) # *****input_elements <class 'list'>
for input_element in input_elements:
print(input_element.get_attribute("outerHTML"))
print('*'*35)
lielements = driver.find_element(By.CSS_SELECTOR,"ul.boxhot li")
for li in lielements:
print(li.text)
search_input = driver.find_element(By.CSS_SELECTOR, 'input[data-hook="searchInput"]')
# print('*****search_input_type',type(search_input)) # search_input_type <class 'selenium.webdriver.remote.webelement.WebElement'>
search_input.send_keys("Selenium库")
search_button = driver.find_element(By.CSS_SELECTOR, 'input[data-hook="searchSubmit"]')
search_button.click()
handles = driver.window_handles
print(type(handles))
if len(handles) > 1:
driver.switch_to.window(handles[1])
# Wait for the search results to load completely
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, 'div[id="content_left"]')))
finally:
driver.quit()
# In this updated version, we added the following imports:
# from selenium.webdriver.support.ui import WebDriverWait
# from selenium.webdriver.support import expected_conditions as EC
# We then added a WebDriverWait statement to wait for the presence of a specific element in the search results page:
# WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, 'div[class="search-list-item"]')))
# This statement waits for up to 10 seconds for an element with the CSS selector 'div[class="search-list-item"]' to appear on the page.
# Once the element appears, the script continues to execute.
# Note that you may need to adjust the CSS selector or the wait time to suit your specific needs.
# (By.CSS_SELECTOR, 'div[id="content_left"]'),
# selenium.webdriver.common.by.By 类的信息。这是 Selenium WebDriver 提供的一组支持的定位策略常量。
# 下面是这些常量的含义和用法:
# By.CLASS_NAME: 根据元素的 class name 属性进行定位。
# By.CSS_SELECTOR: 根据 CSS 选择器进行定位。
# By.ID: 根据元素的 id 属性进行定位。
# By.LINK_TEXT: 根据链接文本进行定位,适用于 <a> 标签。
# By.NAME: 根据元素的 name 属性进行定位。
# By.PARTIAL_LINK_TEXT: 根据链接文本的部分匹配进行定位。
# By.TAG_NAME: 根据元素的标签名进行定位。
# By.XPATH: 根据 XPath 表达式进行定位。
# 这些常量可用于 find_element() 和 find_elements() 方法的 locator 参数中,以指定要使用的定位策略。
以上是 `WebDriver` 类对象的主要属性和方法,它们允许你控制浏览器的行为,与页面进行交互,并执行自动化测试或网页爬取等任务。