WebDriver类是 Selenium WebDriver 提供的用于控制浏览器的核心类之一,它提供了许多属性和方法来管理浏览器会话、导航到不同的网页、定位和操作页面元素等。下面分别归纳其属性和方法:
**属性:**
1. `capabilities`: 返回当前会话的浏览器的配置。
2. `desired_capabilities`: 返回用于启动浏览器的配置。
3. `session_id`: 返回当前会话的唯一标识符。
4. `title`: 返回当前页面的标题。
5. `current_url`: 返回当前页面的 URL。
6. `page_source`: 返回当前页面的 HTML 源代码。
7. `current_window_handle`: 返回当前窗口的句柄。
8. `window_handles`: 返回所有窗口的句柄列表。
**方法:**
1. `get(url)`: 打开指定 URL 的页面。
2. `back()`: 在浏览器历史记录中后退一步。
3. `forward()`: 在浏览器历史记录中前进一步。
4. `refresh()`: 刷新当前页面。
5. `close()`: 关闭当前窗口。
6. `quit()`: 退出 WebDriver 并关闭所有窗口。
7. `execute_script(script, *args)`: 在当前页面执行 JavaScript 脚本。
8. `execute_async_script(script, *args)`: 在当前页面异步执行 JavaScript 脚本。
9. `switch_to`: 切换到其他上下文,如 iframe 或窗口。
10. `implicitly_wait(time_to_wait)`: 设置隐式等待时间。
11. `set_page_load_timeout(time_to_wait)`: 设置页面加载超时时间。
12. `set_script_timeout(time_to_wait)`: 设置执行 JavaScript 脚本的超时时间。
13. `add_cookie(cookie_dict)`: 添加 cookie 到当前会话。
14. `delete_cookie(name)`: 删除当前会话中的指定 cookie。
15. `delete_all_cookies()`: 删除当前会话中的所有 cookie。
16. `get_cookie(name)`: 获取当前会话中指定名称的 cookie。
17. `get_cookies()`: 获取当前会话中的所有 cookie。
18. `maximize_window()`: 最大化当前窗口。
19. `minimize_window()`: 最小化当前窗口。
20. `fullscreen_window()`: 将当前窗口设置为全屏。
21. `back()`: 返回上一个页面。
22. `forward()`: 前进到下一个页面。
23. `find_element(by, value)`: 根据定位策略和值查找单个元素。
24. `find_elements(by, value)`: 根据定位策略和值查找多个元素。
示例:
- 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
- input_elements = driver.find_elements(By.TAG_NAME, "input")
- # print('*****input_elements',type(input_elements)) # *****input_elements
- 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
- 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: 根据链接文本进行定位,适用于 标签。
- # By.NAME: 根据元素的 name 属性进行定位。
- # By.PARTIAL_LINK_TEXT: 根据链接文本的部分匹配进行定位。
- # By.TAG_NAME: 根据元素的标签名进行定位。
- # By.XPATH: 根据 XPath 表达式进行定位。
- # 这些常量可用于 find_element() 和 find_elements() 方法的 locator 参数中,以指定要使用的定位策略。
以上是 `WebDriver` 类对象的主要属性和方法,它们允许你控制浏览器的行为,与页面进行交互,并执行自动化测试或网页爬取等任务。