1. `selenium.common.exceptions`:包含了 Selenium 中可能出现的异常。
2. `selenium.webdriver.chrome.options`:用于配置 Chrome 浏览器的选项。
3. `selenium.webdriver.chrome.service`:用于管理 Chrome 浏览器的后台服务。
4. `selenium.webdriver.chrome.webdriver`:Chrome 浏览器的 WebDriver 实现。
5. `selenium.webdriver.chromium.options`:用于配置 Chromium 浏览器的选项。
6. `selenium.webdriver.chromium.remote_connection`:与远程 Chromium 浏览器进行连接的类。
7. `selenium.webdriver.chromium.service`:用于管理 Chromium 浏览器的后台服务。
8. `selenium.webdriver.chromium.webdriver`:Chromium 浏览器的 WebDriver 实现。
9. `selenium.webdriver.common.alert`:用于处理网页中的弹出框。
10. `selenium.webdriver.common.by`:用于定位网页元素的方法。
11. `selenium.webdriver.common.desired_capabilities`:用于设置 WebDriver 的期望参数。
12. `selenium.webdriver.common.keys`:包含了键盘按键的常量。
13. `selenium.webdriver.common.log`:用于配置 Selenium 日志记录。
14. `selenium.webdriver.common.options`:WebDriver 的选项设置。
15. `selenium.webdriver.common.print_page_options`:打印页面时的选项设置。
16. `selenium.webdriver.common.proxy`:用于配置代理服务器的选项。
17. `selenium.webdriver.common.service`:WebDriver 的服务设置。
18. `selenium.webdriver.common.timeouts`:WebDriver 的超时设置。
19. `selenium.webdriver.common.utils`:WebDriver 的实用工具函数。
20. `selenium.webdriver.common.virtual_authenticator`:用于模拟身份验证的虚拟身份验证器。
21. `selenium.webdriver.common.window`:用于管理浏览器窗口的选项。
22. `selenium.webdriver.edge.options`:用于配置 Edge 浏览器的选项。
23. `selenium.webdriver.edge.service`:用于管理 Edge 浏览器的后台服务。
24. `selenium.webdriver.edge.webdriver`:Edge 浏览器的 WebDriver 实现。
25. `selenium.webdriver.firefox.remote_connection`:与远程 Firefox 浏览器进行连接的类。
26. `selenium.webdriver.firefox.service`:用于管理 Firefox 浏览器的后台服务。
27. `selenium.webdriver.remote.bidi_connection`:双向通信连接的类。
28. `selenium.webdriver.remote.command`:用于执行远程 WebDriver 命令的类。
29. `selenium.webdriver.remote.errorhandler`:处理远程 WebDriver 错误的类。
30. `selenium.webdriver.remote.file_detector`:用于处理文件上传的类。
31. `selenium.webdriver.remote.mobile`:用于配置移动设备的选项。
32. `selenium.webdriver.remote.remote_connection`:与远程 WebDriver 进行连接的类。
33. `selenium.webdriver.remote.script_key`:脚本密钥管理的类。
34. `selenium.webdriver.remote.shadowroot`:用于处理 Shadow DOM 的类。
35. `selenium.webdriver.remote.switch_to`:用于切换浏览器上下文的类。
36. `selenium.webdriver.remote.utils`:远程 WebDriver 的实用工具函数。
37. `selenium.webdriver.remote.webdriver`:远程 WebDriver 的实现。
38. `selenium.webdriver.remote.webelement`:远程 WebElement 的实现。
39. `selenium.webdriver.support.abstract_event_listener`:抽象事件监听器的类。
40. `selenium.webdriver.support.color`:用于处理颜色的工具函数。
41. `selenium.webdriver.support.event_firing_webdriver`:支持事件驱动的 WebDriver。
42. `selenium.webdriver.support.expected_conditions`:用于等待条件满足的工具函数。
43. `selenium.webdriver.support.relative_locator`:相对定位器的类。
44. `selenium.webdriver.support.select`:用于操作下拉框的类。
45. `selenium.webdriver.support.wait`:用于等待页面元素加载完成的类。
-----------------------------------------
----------
`selenium.webdriver.support.wait.WebDriverWait` 类主要包含以下外部使用的方法:
1. `__init__(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)`: 构造函数,接受一个 WebDriver 实例和超时时间(以秒为单位)作为参数。`driver` 参数是 WebDriver 的实例(如 Ie,Firefox,Chrome 或 Remote)或 WebElement。`timeout` 参数是在超时前的秒数。`poll_frequency` 参数是调用之间的休眠间隔,默认为0.5秒。`ignored_exceptions` 参数是在调用期间忽略的异常类的可迭代结构,默认只包含 NoSuchElementException。
示例:
from selenium.webdriver.support.wait import WebDriverWait
element = WebDriverWait(driver, 10).until(lambda x: x.find_element(By.ID, "someId"))
is_disappeared = WebDriverWait(driver, 30, 1, (ElementNotVisibleException)).until_not(lambda x: x.find_element(By.ID, "someId").is_displayed())
2. `until(method, message='')`: 调用提供的方法,该方法将驱动程序作为参数,直到返回值不为 False。参数 `method` 是一个可调用的 WebDriver,`message` 是可选的 TimeoutException 消息。如果超时,将引发 `selenium.common.exceptions.TimeoutException` 异常。
3. `until_not(method, message='')`: 调用提供的方法,该方法将驱动程序作为参数,直到返回值为 False。参数 `method` 是一个可调用的 WebDriver,`message` 是可选的 TimeoutException 消息。如果超时,将引发 `selenium.common.exceptions.TimeoutException` 异常。
这些方法可以与 `expected_conditions` 类中的方法一起使用,以等待某个条件成立或不成立。例如,等待元素可见、等待元素可点击、等待元素被选中等。这对于处理动态加载的页面或者需要等待某个操作完成的情况非常有用。
-------------------
如下这些方法主要用于 `WebDriverWait` 类的实例,以等待某个条件成立。例如,等待元素可见、等待元素可点击、等待元素被选中等。这对于处理动态加载的页面或者需要等待某个操作完成的情况非常有用。
以下是 `selenium.webdriver.support.expected_conditions` 类中主要供外部使用的方法:
1. `alert_is_present()`: 检查是否当前存在警告并切换到它。
2. `all_of(*expected_conditions)`: 所有的期望条件都为真。
3. `any_of(*expected_conditions)`: 任意一个期望条件为真。
4. `element_attribute_to_include(locator, attribute_)`: 检查给定的属性是否包含在指定的元素中。
5. `element_located_selection_state_to_be(locator, is_selected)`: 定位元素并检查其选中状态是否与给定的状态匹配。
6. `element_located_to_be_selected(locator)`: 检查定位到的元素是否被选中。
7. `element_selection_state_to_be(element, is_selected)`: 检查给定的元素是否被选中。
8. `element_to_be_clickable(mark)`: 检查元素是否可见且可点击。
9. `element_to_be_selected(element)`: 检查元素是否被选中。
10. `frame_to_be_available_and_switch_to_it(locator)`: 检查给定的框架是否可用并切换到它。
11. `invisibility_of_element(element)`: 检查元素是否不可见或不在DOM上。
12. `invisibility_of_element_located(locator)`: 检查元素是否不可见或不在DOM上。
13. `new_window_is_opened(current_handles)`: 期望新窗口被打开并且窗口句柄数量增加。
14. `none_of(*expected_conditions)`: 所有的期望条件都为假。
15. `number_of_windows_to_be(num_windows)`: 期望窗口数量为特定值。
16. `presence_of_all_elements_located(locator)`: 检查网页上是否至少存在一个元素。
17. `presence_of_element_located(locator)`: 检查页面的DOM上是否存在元素。
18. `staleness_of(element)`: 等待元素不再附加到DOM上。
19. `text_to_be_present_in_element(locator, text_)`: 检查给定的文本是否在指定的元素中。
20. `text_to_be_present_in_element_attribute(locator, attribute_, text_)`: 检查给定的文本是否在元素的属性中。
21. `text_to_be_present_in_element_value(locator, text_)`: 检查给定的文本是否在元素的值中。
22. `title_contains(title)`: 检查标题是否包含特定的子串。
23. `title_is(title)`: 检查页面的标题。
24. `url_changes(url)`: 检查当前的url。
25. `url_contains(url)`: 检查当前的url是否包含特定的子串。
26. `url_matches(pattern)`: 检查当前的url。
27. `url_to_be(url)`: 检查当前的url。
28. `visibility_of(element)`: 检查已知存在于页面DOM上的元素是否可见。
29. `visibility_of_all_elements_located(locator)`: 检查所有元素是否存在于页面的DOM上且可见。
30. `visibility_of_any_elements_located(locator)`: 检查至少有一个元素在网页上可见。
31. `visibility_of_element_located(locator)`: 检查元素是否存在于页面的DOM上且可见。
---------------------------------------
WebElement 类是 Selenium 中一个非常重要的类,它代表了网页中的一个元素。
WebElement` 类提供了一系列的方法和属性,让我们能够与网页上的元素进行交互。
在 `selenium.webdriver.remote.webelement.WebElement` 类中,以下是主要供外部使用的方法和属性:
方法:
1. `clear()`: 清除文本输入元素的文本。
2. `click()`: 点击元素。
3. `find_element(by='id', value=None)`: 根据给定的定位策略和定位器找到元素。
4. `find_elements(by='id', value=None)`: 根据给定的定位策略和定位器找到一组元素。
5. `get_attribute(name)`: 获取元素的给定属性或属性。
6. `get_property(name)`: 获取元素的给定属性。
7. `is_displayed()`: 元素是否对用户可见。
8. `is_enabled()`: 返回元素是否启用。
9. `is_selected()`: 返回元素是否被选中。可以用来检查复选框或单选按钮是否被选中。
10. `screenshot(filename)`: 将当前元素的屏幕截图保存为 PNG 图像文件。
11. `send_keys(*value)`: 模拟在元素中输入。
12. `submit()`: 提交表单。
属性:
1. `location`: 元素在可渲染画布中的位置。
2. `rect`: 包含元素大小和位置的字典。
3. `size`: 元素的大小。
4. `tag_name`: 此元素的 tagName 属性。
5. `text`: 元素的文本。
这些方法和属性使得我们可以在自动化测试、网页爬虫等场景中方便地对网页元素进行操作和提取信息。
**************
get_attribute(name)方法可以用来获取元素的指定属性或属性值,其中name参数表示要获取的属性名称。
以下是一些常见的HTML属性名称,你可以使用 `get_attribute(name)` 方法获取这些属性的值:
1. `class`: 元素的类名。
2. `id`: 元素的唯一标识符。
3. `name`: 元素的名称。
4. `value`: 元素的值(对于输入字段,这是输入字段的内容)。
5. `type`: 元素的类型(例如,对于``标签,类型可能为`text`、`checkbox`、`radio`、`button`等)。
6. `href`: 对于链接元素(``标签),这是链接的URL。
7. `src`: 对于图像元素(``标签)或脚本元素(`