selenium.webdriver.remote.webdriver
WebDriver 实现。
1. class selenium.webdriver.remote.webdriver.WebDriver(command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=None, browser_profile=None, proxy=None, keep_alive=False, file_detector=None, options=None)
通过向远程服务器发送命令来控制浏览器。该服务器应运行 WebDriver 协议,如https://github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol中所定义。
-
属性:
-
session_id - 此 WebDriver 启动和控制的浏览器会话的字符串 ID。
-
capabilities - 返回此浏览器会话的有效功能。请参阅https://github.com/SeleniumHQ/selenium/wiki/DesiredCapabilities
-
command_executor - 用于执行命令的 remote_connection.RemoteConnection 对象。
-
error_handler - 用于处理错误的 errorhandler.ErrorHandler 对象。
-
创建一个使用有线协议发出命令的新驱动程序。
-
参数:
-
command_executor - 表示远程服务器的 URL 或自定义的字符串
-
remote_connection.RemoteConnection 对象。默认为
http://127.0.0.1:4444/wd/hub
。 -
desired_capabilities - 请求的功能字典,启动浏览器会话。必需参数。
-
browser_profile - 一个
selenium.webdriver.firefox.firefox_profile.FirefoxProfile
对象。仅在请求 Firefox 时使用。可选的。 -
proxy - 一个
selenium.webdriver.common.proxy.Proxy
对象。如果可能,请使用给定的代理设置启动。可选的。 -
keep_alive - 是否配置要使用的
remote_connection.RemoteConnection
HTTP 保持活跃。默认为 False。 -
file_detector - 在实例化期间传递自定义文件检测器对象。如果没有,将使用默认的
LocalFileDetector()
。 -
options - 驱动程序选项 Options 的实例。
-
1.1. add_cookie(cookie_dict)
在当前会话中添加 cookie。
-
参数:
- cookie_dict: 一个字典对象,带有必需的键 - "name"、"value"; 可选键 - "path", "domain", "secure", "expiry"
-
用法:
driver.add_cookie({'name':'foo', 'value':'bar'}) driver.add_cookie({'name':'foo', 'value':'bar', 'path':'/'}) driver.add_cookie({'name':'foo', 'value':'bar', 'path':'/', 'secure':True})
1.2. application_cache
返回 ApplicationCache 对象以与浏览器应用程序缓存交互
1.3. back()
在浏览器历史记录中向后退一步。
-
用法:
driver.back()
1.4. close()
关闭当前窗口。
-
用法:
driver.close()
1.5. create_web_element(element_id)
使用指定的 element_id 创建 Web 元素。
1.6. current_url
获取当前页面的 URL。
-
用法:
driver.current_url
1.7. current_window_handle
返回当前窗口的句柄。
-
用法:
driver.current_window_handle
1.8. delete_all_cookies()
删除会话范围内的所有 cookie。
- 用法:
driver.delete_all_cookies()
1.9. delete_cookie(name)
删除具有给定名称的单个 cookie。
- 用法:
driver.delete_cookie('my_cookie')
1.10. desired_capabilities
返回驱动程序当前所需的功能
1.11. execute(driver_command, params=None)
发送命令由 command.CommandExecutor 执行。
-
参数:
-
driver_command:要作为字符串执行的命令的名称。
-
params:使用命令发送的命名参数的字典。
-
-
返回:命令的 JSON 响应加载到字典对象中。
1.12. execute_async_script(script, *args)
异步执行当前窗口 / 框架中的 JavaScript。
-
参数:
-
script: 要执行的 JavaScript。
-
*args: JavaScript 的任何适用参数。
-
-
用法:
script = "var callback = arguments[arguments.length - 1];window.setTimeout(function(){callback('timeout')}, 3000);" driver.execute_async_script(script)
1.13. execute_script(script, *args)
在当前窗口 / 框架中同步执行 JavaScript。
-
参数:
-
script: 要执行的 JavaScript。
-
*args: JavaScript 的任何适用参数。
-
-
用法:
driver.execute_script('return document.title;')
1.14. file_detector
1.15. file_detector_context(*args, **kwds)
在有限的上下文中覆盖当前文件检测器(如有必要)。确保之后设置原始文件检测器。
例如:
webdriver.file_detector_context(UselessFileDetector):
someinput.send_keys('/etc/hosts')
-
参数:
-
file_detector_class - 所需文件检测器的类。如果班级不同
-
从当前的 file_detector 开始,然后使用 args 和 kwargs 对类进行实例化,并在上下文管理器的持续时间内用作文件检测器。
-
args - 在期间传递给文件检测器类的可选参数实例。
-
kwargs - 关键字参数,以与 args 相同的方式传递。
-
1.16. find_element(by='id', value=None)
找到给定 By 策略和定位器的元素。尽可能优先使用 find_element_by_*
方法。
-
用法:
element = driver.find_element(By.ID, 'foo')
-
返回类型:
WebElement
1.17. find_element_by_class_name(name)
按类名查找元素。
-
参数:
- name: 要查找的元素的类名。
-
返回:
- WebElement - 找到的元素
-
Raises :
- NoSuchElementException - 如果找不到该元素
-
用法:
element = driver.find_element_by_class_name('foo')
1.18. find_element_by_css_selector(css_selector)
通过 css 选择器查找元素。
-
参数:
- css_selector - CSS 选择器字符串,例如:'a.nav#home'
-
返回:
- WebElement - 找到的元素
-
Raises :
- NoSuchElementException - 如果找不到该元素
-
用法:
element = driver.find_element_by_css_selector('#foo')
1.19. find_element_by_id(id_)
按 id 查找元素。
-
参数:
- id_ - 要查找的元素的 id。
-
返回:
- WebElement - 找到的元素
-
Raises :
- NoSuchElementException - 如果找不到该元素
-
用法:
element = driver.find_element_by_id('foo')
1.20. find_element_by_link_text(link_text)
按链接文本查找元素。
-
参数:
- link_text: 要查找的元素的文本。
-
返回:
- WebElement - 找到的元素
-
Raises :
- NoSuchElementException - 如果找不到该元素
-
用法:
element = driver.find_element_by_link_text('Sign In')
1.21. find_element_by_name(name)
按名称查找元素。
-
参数:
- name: 要查找的元素的名称。
-
返回:
- WebElement - 找到的元素
-
Raises :
- NoSuchElementException - 如果找不到该元素
-
用法:
element = driver.find_element_by_name('foo')
1.22. find_element_by_partial_link_text(link_text)
通过其链接文本的部分匹配来查找元素。
-
参数:
- link_text: 要部分匹配的元素的文本。
-
返回:
- WebElement - 找到的元素
-
Raises :
- NoSuchElementException - 如果找不到该元素
-
用法:
element = driver.find_element_by_partial_link_text('Sign')
1.23. find_element_by_tag_name(name)
按标签名称查找元素。
-
参数:
- name - html 标记的名称(例如:h1,a,span)
-
返回:
- WebElement - 找到的元素
-
Raises :
- NoSuchElementException - 如果找不到该元素
-
用法:
element = driver.find_element_by_tag_name('h1')
1.24. find_element_by_xpath(xpath)
通过 xpath 查找元素。
-
参数:
- xpath - 通过 xpath 查找元素。
-
返回:
- WebElement - 找到的元素
-
Raises :
- NoSuchElementException - 如果找不到该元素
-
用法:
element = driver.find_element_by_xpath('//div/td[1]')
1.25. find_elements(by='id', value=None)
查找按策略和定位器给出的多个元素。尽可能优先使用 find_elements_by_*
方法。
-
用法:
elements = driver.find_elements(By.CLASS_NAME, 'foo')
-
返回类型:WebElement 列表
1.26. find_elements_by_class_name(name)
按类名查找多个元素。
-
参数:
- name: 要查找的元素的类名。
-
返回:
- WebElement 列表 - 包含元素的列表(如果找到)。如果没有,则为空列表
-
用法:
elements = driver.find_elements_by_class_name('foo')
1.27. find_elements_by_css_selector(css_selector)
通过 css 选择器查找多个元素。
-
参数:
- css_selector - CSS 选择器字符串,例如: 'a.nav#home'
-
返回:
- WebElement 列表 - 包含元素的列表(如果找到)。如果没有,则为空列表
-
用法:
elements = driver.find_elements_by_css_selector('.foo')
1.28. find_elements_by_id(id_)
按 id 查找多个元素。
-
参数:
- id_ - 要查找的元素的 ID。
-
返回:
- WebElement 列表 - 包含元素的列表(如果找到)。如果没有,则为空列表
-
用法:
elements = driver.find_elements_by_id('foo')
1.29. find_elements_by_link_text(text)
按链接文本查找多个元素。
-
参数:
- link_text: 要查找的元素的文本。
-
返回:
- WebElement 列表 - 包含元素的列表(如果找到)。如果没有,则为空列表
-
用法:
elements = driver.find_elements_by_link_text('Sign In')
1.30. find_elements_by_name(name)
按名称查找元素。
-
参数:
- name: 要查找的元素的名称。
-
返回:
- WebElement 列表 - 包含元素的列表(如果找到)。如果没有,则为空列表
-
用法:
elements = driver.find_elements_by_name('foo')
1.31. find_elements_by_partial_link_text(link_text)
通过链接文本的部分匹配来查找多个元素。
-
参数:
- link_text: 要部分匹配的元素的文本。
-
返回:
- WebElement 列表 - 包含元素的列表(如果找到)。如果没有,则为空列表
-
用法:
elements = driver.find_elements_by_partial_link_text('Sign')
1.32. find_elements_by_tag_name(name)
按标签名称查找元素。
-
参数:
- name - html 标记的名称(例如:h1,a,span)
-
返回:
- WebElement 列表 - 包含元素的列表(如果找到)。如果没有,则为空列表
-
用法:
elements = driver.find_elements_by_tag_name('h1')
1.33. find_elements_by_xpath(xpath)
通过 xpath 查找多个元素。
-
参数:
- xpath - 要查找的元素的 xpath 定位器。
-
返回:
- WebElement 列表 - 包含元素的列表(如果找到)。如果没有,则为空列表
-
用法:
elements = driver.find_elements_by_xpath("//div[contains(@class, 'foo')]")
1.34. forward()
在浏览器历史记录中前进一步。
- 用法:
driver.forward()
1.35. fullscreen_window()
调用特定于窗口管理器的全屏
操作
1.36. get(url)
在当前浏览器会话中加载网页。
1.37. get_cookie(name)
按名称获取单个 cookie。如果找到则返回 cookie,否则返回 None。
- 用法:
driver.get_cookie('my_cookie')
1.38. get_cookies()
返回一组字典,对应于当前会话中可见的 cookie。
- 用法:
driver.get_cookies()
1.39. get_log(log_type)
获取给定日志类型的日志
-
参数:
- log_type:将返回的日志类型
-
用法:
driver.get_log('browser') driver.get_log('driver') driver.get_log('client') driver.get_log('server')
1.40. get_screenshot_as_base64()
获取当前窗口的屏幕截图作为 base64 编码的字符串。
这在 HTML 中的嵌入图像中很有用。
- 用法:
driver.get_screenshot_as_base64()
1.41. get_screenshot_as_file(filename)
将当前窗口的屏幕截图保存到 PNG 图像文件。
如果存在任何 IOError 则返回 false,否则返回 True。在文件名中使用完整路径。
-
参数:
- filename: 希望将屏幕截图保存到的完整路径。这应该以
.png
扩展名结尾。
- filename: 希望将屏幕截图保存到的完整路径。这应该以
-
用法:
driver.get_screenshot_as_file('/Screenshots/foo.png')
1.42. get_screenshot_as_png()
获取当前窗口的屏幕截图作为二进制数据。
- 用法:
driver.get_screenshot_as_png()
1.43. get_window_position(windowHandle='current')
获取当前窗口的 x,y 位置。
- 用法:
driver.get_window_position()
1.44. get_window_rect()
获取窗口的 x,y 坐标以及当前窗口的高度和宽度。
- 用法:
driver.get_window_rect()
1.45. get_window_size(windowHandle='current')
获取当前窗口的宽度和高度。
- 用法:
driver.get_window_size()
1.46. implicitly_wait(time_to_wait)
设置超时以隐式等待找到元素,或完成命令。
此方法仅需要在每个会话中调用一次。
要设置 execute_async_script 调用的超时,请参阅 set_script_timeout。
-
参数:
- time_to_wait: 等待的时间(以秒为单位)
-
用法:
driver.implicitly_wait(30)
1.47. log_types
获取可用日志类型的列表
- 用法:
driver.log_types
1.48. maximize_window()
最大化 webdriver 正在使用的当前窗口
1.49. minimize_window()
调用特定于窗口管理器的最小化
操作
1.50. mobile
1.51. name
返回此实例的基础浏览器的名称。
- 用法:
name = driver.name
1.52. orientation
获取设备的当前方向
- 用法:
orientation = driver.orientation
1.53. page_source
获取当前页面的源。
- 用法:
driver.page_source
1.54. quit()
退出驱动程序并关闭每个关联的窗口。
- 用法:
driver.quit()
1.55. refresh()
刷新当前页面。
- 用法:
driver.refresh()
1.56. save_screenshot(filename)
将当前窗口的屏幕截图保存到 PNG 图像文件。
如果存在任何 IOError 则返回 false,否则返回 True。在文件名中使用完整路径。
-
参数:
- filename: 您希望将屏幕截图保存到的完整路径。这应该以。png 扩展名结尾。
-
用法:
driver.save_screenshot('/Screenshots/foo.png')
1.57. set_page_load_timeout(time_to_wait)
设置等待页面加载完成的时间
-
参数:
- time_to_wait: 等待的时间
-
用法:
driver.set_page_load_timeout(30)
1.58. set_script_timeout(time_to_wait)
设置脚本在一段时间内应该等待的时间
-
参数:
- time_to_wait: 等待的时间(以秒为单位)
-
用法:
driver.set_script_timeout(30)
1.59. set_window_position(x, y, windowHandle='current')
设置当前窗口的 x,y 位置。(window.moveTo)
-
参数:
-
x:用于设置窗口位置的 x 坐标(以像素为单位)
-
y:用于设置窗口位置的 y 坐标(以像素为单位)
-
-
用法:
driver.set_window_position(0,0)
1.60. set_window_rect(x=None, y=None, width=None, height=None)
设置窗口的 x,y 坐标以及当前窗口的高度和宽度。
-
用法:
driver.set_window_rect(x=10, y=10) driver.set_window_rect(width=100, height=200) driver.set_window_rect(x=10, y=10, width=100, height=200)
1.61. set_window_size(width, height, windowHandle='current')
设置当前窗口的宽度和高度。(window.resizeTo)
-
参数:
-
width:设置窗口的宽度(以像素为单位)
-
height:设置窗口的高度(以像素为单位)
-
-
用法:
driver.set_window_size(800,600)
1.62. start_client()
在开始新会话之前调用。可以重写此方法以定义自定义启动行为。
1.63. start_session(capabilities, browser_profile=None)
创建具有所需功能的新会话。
-
参数:
-
browser_name - 要请求的浏览器的名称。
-
version - 要请求的浏览器版本。
-
platform - 请求浏览器的平台。
-
javascript_enabled - 新会话是否应支持 JavaScript。
-
browser_profile - 一个
selenium.webdriver.firefox.firefox_profile.FirefoxProfile
对象。仅在请求 Firefox 时使用。
-
1.64. stop_client()
执行退出命令后调用。可以重写此方法以定义自定义关闭行为。
1.65. switch_to
-
返回:
- SwitchTo: 包含将焦点切换到的所有选项的对象
-
用法:
element = driver.switch_to.active_element alert = driver.switch_to.alert driver.switch_to.default_content() driver.switch_to.frame('frame_name') driver.switch_to.frame(1) driver.switch_to.frame(driver.find_elements_by_tag_name("iframe")[0]) driver.switch_to.parent_frame() driver.switch_to.window('main')
1.66. switch_to_active_element()
不推荐,请使用 driver.switch_to.active_element
1.67. switch_to_alert()
不推荐,请使用 driver.switch_to.alert
1.68. switch_to_default_content()
不推荐,请使用 driver.switch_to.default_content
1.69. switch_to_frame(frame_reference)
不推荐,请使用 driver.switch_to.frame
1.70. switch_to_window(window_name)
不推荐,请使用 driver.switch_to.window
1.71. title
返回当前页面的标题。
- 用法:
title = driver.title
1.72. window_handles
返回当前会话中所有窗口的句柄。
- 用法:
driver.window_handles