marionette_driver 包

子模块

marionette_driver.addons 模块

exception marionette_driver.addons.AddonInstallException(message=None, cause=None, stacktrace=None)

基类: MarionetteException

class marionette_driver.addons.Addons(marionette)

基类: object

用于在 Gecko 运行时安装和检查附加组件的 API。这是 Gecko 的 AddonManager API 的部分实现的包装器。

例如

from marionette_driver.addons import Addons
addons = Addons(marionette)
addons.install("/path/to/extension.xpi")
install(path, temp=False)

安装 Firefox 附加组件。

如果附加组件是无需重启的,则可以立即使用。否则,将需要使用 restart() 重启。

参数:
  • path – 要安装的扩展程序的文件路径。

  • temp – 安装临时附加组件。临时附加组件将在关闭时自动卸载,并且不需要签名,但必须是无需重启的。

返回值:

新安装的附加组件的附加组件 ID 字符串。

引发:

AddonInstallException

uninstall(addon_id)

卸载 Firefox 附加组件。

如果附加组件是无需重启的,则将立即卸载。否则,将需要使用 restart() 重启。

如果卸载调用导致 ScriptTimeoutException,则可能传递了无效的 ID。不幸的是,由于 AddonManager 的实现,很难从 Python 中检索此错误。

参数:

addon_id – 要卸载的附加组件 ID 字符串。

marionette_driver.by 模块

class marionette_driver.by.By

基类: object

CLASS_NAME = 'class name'
CSS_SELECTOR = 'css selector'
ID = 'id'
NAME = 'name'
TAG_NAME = 'tag name'
XPATH = 'xpath'

marionette_driver.date_time_value 模块

class marionette_driver.date_time_value.DateTimeValue(element)

基类: object

用于设置 HTML5 “date” 和 “time” 输入元素值的接口。

简单的使用示例

element = marionette.find_element(By.ID, "date-test")
dt_value = DateTimeValue(element)
dt_value.date = datetime(1998, 6, 2)
property date

检索元素的字符串值

property time

检索元素的字符串值

marionette_driver.decorators 模块

marionette_driver.decorators.do_process_check(func)

装饰器,在函数运行后检查进程状态。

marionette_driver.decorators.uses_marionette(func)

装饰器,创建 marionette 会话并在之后删除它(如果不存在)。

marionette_driver.decorators.using_context(context)

装饰器,允许函数在使用 marionette.using_context 功能的特定作用域中执行,并在函数退出时返回到旧的作用域。:param context: “chrome” 或 “content”。

marionette_driver.errors 模块

exception marionette_driver.errors.DetachedShadowRootException(message=None, cause=None, stacktrace=None)

基类: MarionetteException

status = 'detached shadow root'
exception marionette_driver.errors.ElementClickInterceptedException(message=None, cause=None, stacktrace=None)

基类: MarionetteException

status = 'element click intercepted'
exception marionette_driver.errors.ElementNotAccessibleException(message=None, cause=None, stacktrace=None)

基类: MarionetteException

status = 'element not accessible'
异常 marionette_driver.errors.ElementNotInteractableException(message=None, cause=None, stacktrace=None)

基类: MarionetteException

status = 'element not interactable'
异常 marionette_driver.errors.ElementNotSelectableException(message=None, cause=None, stacktrace=None)

基类: MarionetteException

status = 'element not selectable'
异常 marionette_driver.errors.ElementNotVisibleException(message='Element is not currently visible and may not be manipulated', stacktrace=None, cause=None)

基类: MarionetteException

已弃用。将在 Firefox 54 发布时删除。

status = 'element not visible'
异常 marionette_driver.errors.InsecureCertificateException(message=None, cause=None, stacktrace=None)

基类: MarionetteException

status = 'insecure certificate'
异常 marionette_driver.errors.InvalidArgumentException(message=None, cause=None, stacktrace=None)

基类: MarionetteException

status = 'invalid argument'
异常 marionette_driver.errors.InvalidCookieDomainException(message=None, cause=None, stacktrace=None)

基类: MarionetteException

status = 'invalid cookie domain'
异常 marionette_driver.errors.InvalidElementCoordinates(message=None, cause=None, stacktrace=None)

基类: MarionetteException

status = 'invalid element coordinates'
异常 marionette_driver.errors.InvalidElementStateException(message=None, cause=None, stacktrace=None)

基类: MarionetteException

status = 'invalid element state'
异常 marionette_driver.errors.InvalidSelectorException(message=None, cause=None, stacktrace=None)

基类: MarionetteException

status = 'invalid selector'
异常 marionette_driver.errors.InvalidSessionIdException(message=None, cause=None, stacktrace=None)

基类: MarionetteException

status = 'invalid session id'
异常 marionette_driver.errors.JavascriptException(message=None, cause=None, stacktrace=None)

基类: MarionetteException

status = 'javascript error'
异常 marionette_driver.errors.MarionetteException(message=None, cause=None, stacktrace=None)

基类: Exception

当发生一般性的不可恢复异常时引发。

属性 message
status = 'webdriver error'
异常 marionette_driver.errors.MoveTargetOutOfBoundsException(message=None, cause=None, stacktrace=None)

基类: MarionetteException

status = 'move target out of bounds'
异常 marionette_driver.errors.NoAlertPresentException(message=None, cause=None, stacktrace=None)

基类: MarionetteException

status = 'no such alert'
异常 marionette_driver.errors.NoSuchElementException(message=None, cause=None, stacktrace=None)

基类: MarionetteException

status = 'no such element'
异常 marionette_driver.errors.NoSuchFrameException(message=None, cause=None, stacktrace=None)

基类: MarionetteException

status = 'no such frame'
异常 marionette_driver.errors.NoSuchShadowRootException(message=None, cause=None, stacktrace=None)

基类: MarionetteException

status = 'no such shadow root'
异常 marionette_driver.errors.NoSuchWindowException(message=None, cause=None, stacktrace=None)

基类: MarionetteException

status = 'no such window'
异常 marionette_driver.errors.ScriptTimeoutException(message=None, cause=None, stacktrace=None)

基类: MarionetteException

status = 'script timeout'
异常 marionette_driver.errors.SessionNotCreatedException(message=None, cause=None, stacktrace=None)

基类: MarionetteException

status = 'session not created'
异常 marionette_driver.errors.StaleElementException(message=None, cause=None, stacktrace=None)

基类: MarionetteException

status = 'stale element reference'
异常 marionette_driver.errors.TimeoutException(message=None, cause=None, stacktrace=None)

基类: MarionetteException

status = 'timeout'
异常 marionette_driver.errors.UnableToSetCookieException(message=None, cause=None, stacktrace=None)

基类: MarionetteException

status = 'unable to set cookie'
异常 marionette_driver.errors.UnexpectedAlertOpen(message=None, cause=None, stacktrace=None)

基类: MarionetteException

status = 'unexpected alert open'
异常 marionette_driver.errors.UnknownCommandException(message=None, cause=None, stacktrace=None)

基类: MarionetteException

status = 'unknown command'
异常 marionette_driver.errors.UnknownException(message=None, cause=None, stacktrace=None)

基类: MarionetteException

status = 'unknown error'
异常 marionette_driver.errors.UnresponsiveInstanceException

基类: Exception

异常 marionette_driver.errors.UnsupportedOperationException(message=None, cause=None, stacktrace=None)

基类: MarionetteException

status = 'unsupported operation'
marionette_driver.errors.lookup(identifier)

通过关联的 Selenium JSON 线协议编号代码或 W3C WebDriver 协议字符串查找错误异常类。

marionette_driver.expected 模块

marionette_driver.expected.element_displayed(*args)

基类: object

检查元素是否可见的期望。

可见性意味着元素不仅显示,而且具有大于 0 像素的高度和宽度。

过时元素,即已从当前上下文 DOM 中分离的元素,被视为未显示,这意味着此预期与调用 is_displayed()WebElement 上的行为并不相同。

您可以通过提供定位器来选择要检查可见性的元素

displayed = Wait(marionette).until(expected.element_displayed(By.ID, "foo"))

或通过提供元素

el = marionette.find_element(By.ID, "foo")
displayed = Wait(marionette).until(expected.element_displayed(el))
参数:

args – 定位器或网页元素

返回值:

如果元素显示则为 True,如果隐藏则为 False

class marionette_driver.expected.element_enabled(element)

基类: object

检查给定元素是否启用的预期。

参数:

element – 要检查是否启用的元素

返回值:

如果元素已启用,则为 True,否则为 False

class marionette_driver.expected.element_not_displayed(*args)

基类:element_displayed

检查元素是否不可见的预期。

可见性意味着元素不仅显示,而且具有大于 0 像素的高度和宽度。

过时元素,即已从当前上下文 DOM 中分离的元素,被视为未显示,这意味着此预期与调用 is_displayed()WebElement 上的行为并不相同。

您可以通过提供定位器来选择要检查可见性的元素

hidden = Wait(marionette).until(expected.element_not_displayed(By.ID, "foo"))

或通过提供元素

el = marionette.find_element(By.ID, "foo")
hidden = Wait(marionette).until(expected.element_not_displayed(el))
参数:

args – 定位器或网页元素

返回值:

如果元素隐藏则为 True,如果显示则为 False

class marionette_driver.expected.element_not_enabled(element)

基类:element_enabled

检查给定元素是否禁用的预期。

参数:

element – 要检查是否禁用的元素

返回值:

如果元素已禁用,则为 True,否则为 False

class marionette_driver.expected.element_not_present(*args)

基类:element_present

检查网页元素是否不存在于当前上下文的 DOM 中。

您可以通过提供定位器来选择要检查不存在的元素

r = Wait(marionette).until(expected.element_not_present(By.ID, "foo"))

或使用返回元素的函数/lambda 表达式

r = Wait(marionette).until(
    expected.element_present(lambda m: m.find_element(By.ID, "foo")))
参数:

args – 定位器或返回网页元素的函数

返回值:

如果元素不存在,则为 True,如果存在,则为 False

class marionette_driver.expected.element_not_selected(element)

基类:element_selected

检查给定元素是否未选中的预期。

参数:

element – 不应选中的元素

返回值:

如果元素未选中,则为 True,如果选中,则为 False

class marionette_driver.expected.element_present(*args)

基类: object

检查网页元素是否存在于当前上下文的 DOM 中。这并不一定意味着元素可见。

您可以通过提供定位器来选择要检查存在的元素

el = Wait(marionette).until(expected.element_present(By.ID, "foo"))

或使用返回元素的函数/lambda 表达式

el = Wait(marionette).until(
    expected.element_present(lambda m: m.find_element(By.ID, "foo")))
参数:

args – 定位器或返回网页元素的函数

返回值:

找到网页元素后,返回网页元素本身,否则返回 False

class marionette_driver.expected.element_selected(element)

基类: object

检查给定元素是否选中的预期。

参数:

element – 要选中的元素

返回值:

如果元素已选中,则为 True,否则为 False

class marionette_driver.expected.element_stale(element)

基类: object

检查给定元素是否不再附加到当前上下文的 DOM。

这对于等待元素不再存在很有用。

示例用法

el = marionette.find_element(By.ID, "foo")
# ...
Wait(marionette).until(expected.element_stale(el))
参数:

element – 要等待的元素

返回值:

如果元素仍然附加到 DOM,则为 False,否则为 True

class marionette_driver.expected.elements_not_present(*args)

基类:elements_present

检查网页元素是否不存在于当前上下文的 DOM 中。

您可以通过提供定位器来选择要检查不存在的元素

r = Wait(marionette).until(expected.elements_not_present(By.TAG_NAME, "a"))

或使用返回元素列表的函数/lambda 表达式

r = Wait(marionette).until(
    expected.elements_not_present(lambda m: m.find_elements(By.TAG_NAME, "a")))
参数:

args – 定位器或返回网页元素列表的函数

返回值:

如果元素丢失,则为 True,如果一个或多个元素存在,则为 False

class marionette_driver.expected.elements_present(*args)

基类: object

检查网页元素是否存在于当前上下文的 DOM 中。这并不一定意味着元素可见。

您可以通过提供定位器来选择要检查存在的元素

els = Wait(marionette).until(expected.elements_present(By.TAG_NAME, "a"))

或使用返回元素列表的函数/lambda 表达式

els = Wait(marionette).until(
    expected.elements_present(lambda m: m.find_elements(By.TAG_NAME, "a")))
参数:

args – 定位器或返回网页元素列表的函数

返回值:

找到网页元素后,返回网页元素列表,否则返回 False

marionette_driver.geckoinstance 模块

class marionette_driver.geckoinstance.DesktopInstance(*args, **kwargs)

基类:GeckoInstance

desktop_prefs = {'app.update.auto': False, 'app.update.checkInstallTime': False, 'app.update.disabledForTesting': True, 'browser.EULA.override': True, 'browser.contentblocking.introCount': 99, 'browser.dom.window.dump.enabled': True, 'browser.download.panel.shown': True, 'browser.newtabpage.activity-stream.telemetry': False, 'browser.newtabpage.enabled': False, 'browser.pagethumbnails.capturing_disabled': True, 'browser.safebrowsing.update.enabled': False, 'browser.search.update': False, 'browser.sessionstore.resume_from_crash': False, 'browser.shell.checkDefaultBrowser': False, 'browser.startup.couldRestoreSession.count': -1, 'browser.startup.homepage_override.mstone': 'ignore', 'browser.startup.page': 0, 'browser.tabs.remote.unloadDelayMs': 0, 'browser.tabs.unloadOnLowMemory': False, 'browser.tabs.warnOnClose': False, 'browser.tabs.warnOnCloseOtherTabs': False, 'browser.tabs.warnOnOpen': False, 'browser.toolbars.bookmarks.visibility': 'never', 'browser.uitour.enabled': False, 'browser.urlbar.merino.endpointURL': '', 'browser.urlbar.suggest.searches': False, 'browser.warnOnQuit': False, 'devtools.console.stdout.chrome': True, 'startup.homepage_welcome_url': 'about:blank', 'startup.homepage_welcome_url.additional': ''}
class marionette_driver.geckoinstance.FennecInstance(emulator_binary=None, avd_home=None, avd=None, adb_path=None, serial=None, connect_to_running_emulator=False, package_name=None, env=None, *args, **kwargs)

基类:GeckoInstance

close(clean=False)

关闭受管的 Gecko 进程。

如果 clean 为 True 并且 Fennec 实例在由 mozrunner 管理的模拟器中运行,这将停止模拟器。

参数:

clean – 如果为 True,则还执行运行器清理。

fennec_prefs = {'browser.dom.window.dump.enabled': True, 'browser.safebrowsing.update.enabled': False, 'browser.sessionstore.resume_from_crash': False, 'devtools.console.stdout.chrome': True}
property package_name

要在模拟器上运行的应用程序的名称。

请注意,FennecInstance 不使用 self.binary

start()
class marionette_driver.geckoinstance.GeckoInstance(host=None, port=None, bin=None, profile=None, addons=None, app_args=None, symbols_path=None, gecko_log=None, prefs=None, workspace=None, verbose=0, headless=False)

基类: object

close(clean=False)

关闭受管的 Gecko 进程。

根据 self.runner_class,将 clean 设置为 True 可能会也杀死此实例正在运行的模拟器进程。

参数:

clean – 如果为 True,则还执行运行器清理。

类方法 create(app=None, *args, **kwargs)
属性 gecko_log
属性 profile
属性 profile_args
required_prefs = {'app.normandy.api_url': '', 'apz.content_response_timeout': 60000, 'browser.newtabpage.activity-stream.discoverystream.region-weather-config': '', 'browser.newtabpage.activity-stream.newtabWallpapers.enabled': False, 'browser.newtabpage.activity-stream.newtabWallpapers.v2.enabled': False, 'browser.newtabpage.activity-stream.showSponsoredTopSites': False, 'browser.region.network.url': '', 'browser.topsites.contile.enabled': False, 'browser.uitour.enabled': False, 'captivedetect.canonicalURL': '', 'datareporting.healthreport.documentServerURI': 'http://%(server)s/dummy/healthreport/', 'datareporting.healthreport.logging.consoleEnabled': False, 'datareporting.healthreport.service.enabled': False, 'datareporting.healthreport.service.firstRun': False, 'datareporting.healthreport.uploadEnabled': False, 'datareporting.policy.dataSubmissionEnabled': False, 'datareporting.policy.dataSubmissionPolicyBypassNotification': True, 'dom.disable_open_during_load': False, 'dom.file.createInChild': True, 'dom.input_events.security.minNumTicks': 0, 'dom.input_events.security.minTimeElapsedInMS': 0, 'dom.ipc.reportProcessHangs': False, 'dom.max_chrome_script_run_time': 0, 'dom.max_script_run_time': 0, 'dom.navigation.navigationRateLimit.count': 0, 'dom.push.connection.enabled': False, 'dom.screenorientation.allow-lock': True, 'dom.successive_dialog_time_limit': 0, 'extensions.autoDisableScopes': 0, 'extensions.blocklist.detailsURL': 'http://%(server)s/extensions-dummy/blocklistDetailsURL', 'extensions.blocklist.itemURL': 'http://%(server)s/extensions-dummy/blocklistItemURL', 'extensions.enabledScopes': 5, 'extensions.getAddons.cache.enabled': False, 'extensions.getAddons.discovery.api_url': 'data:, ', 'extensions.getAddons.get.url': 'http://%(server)s/extensions-dummy/repositoryGetURL', 'extensions.getAddons.search.browseURL': 'http://%(server)s/extensions-dummy/repositoryBrowseURL', 'extensions.hotfix.url': 'http://%(server)s/extensions-dummy/hotfixURL', 'extensions.installDistroAddons': False, 'extensions.systemAddon.update.enabled': False, 'extensions.update.background.url': 'http://%(server)s/extensions-dummy/updateBackgroundURL', 'extensions.update.enabled': False, 'extensions.update.notifyUser': False, 'extensions.update.url': 'http://%(server)s/extensions-dummy/updateURL', 'focusmanager.testmode': True, 'general.useragent.updates.enabled': False, 'geo.provider.network.url': '', 'geo.provider.testing': True, 'geo.wifi.scan': False, 'gfx.webrender.all': True, 'identity.fxaccounts.auth.uri': 'https://{server}/dummy/fxa', 'idle.lastDailyNotification': -1, 'media.gmp-manager.updateEnabled': False, 'media.sanity-test.disabled': True, 'media.volume_scale': '0.01', 'network.connectivity-service.enabled': False, 'network.dns.native_https_query': False, 'network.http.prompt-temp-redirect': False, 'network.manage-offline-status': False, 'network.sntp.pools': '%(server)s', 'privacy.trackingprotection.enabled': False, 'remote.prefs.recommended': False, 'security.certerrors.mitm.priming.enabled': False, 'security.notification_enable_delay': 0, 'security.remote_settings.intermediates.enabled': False, 'services.settings.server': 'data:,#remote-settings-dummy/v1', 'signon.rememberSignons': False, 'toolkit.startup.max_resumed_crashes': -1, 'toolkit.telemetry.server': 'https://%(server)s/telemetry-dummy/', 'widget.windows.window_occlusion_tracking.enabled': False}
restart(prefs=None, clean=True)

关闭然后启动受管理的 Gecko 进程。

参数:
  • prefs – 偏好设置名称和值的字典。

  • clean – 如果为 True,则在启动之前重置配置文件。

start()
switch_profile(profile_name=None, clone_from=None)

通过使用给定的名称切换配置文件,并可以选择性地克隆它。

profile 相比,此方法允许通过控制用于新配置文件的配置文件名称来切换配置文件。它还始终创建一个新的空白配置文件,或作为现有配置文件的克隆。

参数:

profile_name – 可选,配置文件的名称,将用作配置文件路径的一部分(包含配置文件的文件夹名称)。

Clone_from:

可选,如果指定,则新配置文件将基于给定的配置文件进行克隆。此参数可以是 mozprofile.Profile 的实例,或配置文件的路径。

update_process(pid, timeout=None)

更新进程以跟踪应用程序何时重新启动自身

marionette_driver.geckoinstance.NullOutput

基类: object

marionette_driver.geckoinstance.ThunderbirdInstance(*args, **kwargs)

基类:GeckoInstance

marionette_driver.keys 模块

marionette_driver.keys.Keys

基类: object

ADD = '\ue025'
ALT = '\ue00a'
ARROW_DOWN = '\ue015'
ARROW_LEFT = '\ue012'
ARROW_RIGHT = '\ue014'
ARROW_UP = '\ue013'
BACK_SPACE = '\ue003'
CANCEL = '\ue001'
CLEAR = '\ue005'
COMMAND = '\ue03d'
CONTROL = '\ue009'
DECIMAL = '\ue028'
DELETE = '\ue017'
DIVIDE = '\ue029'
DOWN = '\ue015'
END = '\ue010'
ENTER = '\ue007'
EQUALS = '\ue019'
ESCAPE = '\ue00c'
F1 = '\ue031'
F10 = '\ue03a'
F11 = '\ue03b'
F12 = '\ue03c'
F2 = '\ue032'
F3 = '\ue033'
F4 = '\ue034'
F5 = '\ue035'
F6 = '\ue036'
F7 = '\ue037'
F8 = '\ue038'
F9 = '\ue039'
HELP = '\ue002'
HOME = '\ue011'
INSERT = '\ue016'
LEFT = '\ue012'
LEFT_ALT = '\ue00a'
LEFT_CONTROL = '\ue009'
LEFT_SHIFT = '\ue008'
META = '\ue03d'
MULTIPLY = '\ue024'
NULL = '\ue000'
NUMPAD0 = '\ue01a'
NUMPAD1 = '\ue01b'
NUMPAD2 = '\ue01c'
NUMPAD3 = '\ue01d'
NUMPAD4 = '\ue01e'
NUMPAD5 = '\ue01f'
NUMPAD6 = '\ue020'
NUMPAD7 = '\ue021'
NUMPAD8 = '\ue022'
NUMPAD9 = '\ue023'
PAGE_DOWN = '\ue00f'
PAGE_UP = '\ue00e'
PAUSE = '\ue00b'
RETURN = '\ue006'
RIGHT = '\ue014'
SEMICOLON = '\ue018'
SEPARATOR = '\ue026'
SHIFT = '\ue008'
SPACE = '\ue00d'
SUBTRACT = '\ue027'
TAB = '\ue004'
UP = '\ue013'

marionette_driver.localization 模块

class marionette_driver.localization.L10n(marionette)

基类: object

一个允许 Marionette 处理本地化内容的 API。

基于 Gecko 的应用程序中 UI 元素的本地化是通过实体和属性完成的。对于静态值,使用位于 .dtd 文件中的实体。而对于动态更新的内容,值来自 .property 文件。这两种类型的元素都可以通过唯一的 ID 进行识别,并检索翻译后的内容。

例如

from marionette_driver.localization import L10n
l10n = L10n(marionette)

l10n.localize_entity(["chrome://branding/locale/brand.dtd"], "brandShortName")
l10n.localize_property(["chrome://global/locale/findbar.properties"], "FastFind"))
localize_entity(dtd_urls, entity_id)

检索指定实体 ID 的本地化字符串。

参数:
  • dtd_urls – 用于搜索实体的 .dtd URL 列表。

  • entity_id – 要检索其本地化字符串的实体的 ID。

返回值:

请求的实体的本地化字符串。

引发:

NoSuchElementException

localize_property(properties_urls, property_id)

检索指定属性 ID 的本地化字符串。

参数:
  • properties_urls – 用于搜索属性的 .properties URL 列表。

  • property_id – 要检索其本地化字符串的属性的 ID。

返回值:

请求的属性的本地化字符串。

引发:

NoSuchElementException

marionette_driver.marionette 模块

class marionette_driver.marionette.ActionSequence(marionette, action_type, input_id, pointer_params=None)

基类: object

用于创建和执行动作序列的 API。

每个 action 方法都会向队列中添加一个或多个动作。当调用 perform() 时,排队的动作将按顺序触发。

可以像下面这样链接在一起:

ActionSequence(self.marionette, "key", id) \
   .key_down("a") \
   .key_up("a") \
   .perform()
click(element=None, button=0)

使用指定的按钮排队点击。

如果给定元素,则首先将指针移动到该元素,否则点击当前指针坐标。

参数:
  • element – 要点击的可选元素。

  • button – 表示要执行操作的指针按钮的整数。默认值:0,表示主设备按钮。

property dict
key_down(value)

value 排队一个 keyDown 动作。

参数:

value – 要执行按键操作的单个字符。

key_up(value)

value 排队一个 keyUp 动作。

参数:

value – 要执行按键操作的单个字符。

pause(duration)
perform()

执行所有排队的动作。

pointer_down(button=0)

button 排队一个 pointerDown 动作。

参数:

button – 要执行操作的指针按钮。默认值:0,表示主设备按钮。

pointer_move(x, y, duration=None, origin=None)

排队一个 pointerMove 动作。

参数:
  • x – 指针的目标 x 轴坐标(以 CSS 像素为单位)。

  • y – 指针的目标 y 轴坐标(以 CSS 像素为单位)。

  • duration – 分配移动操作所用的毫秒数。如果为 None,则远程端默认为 0。

  • origin – 坐标原点,可以是“viewport”、“pointer”或一个元素。如果为 None,则远程端默认为“viewport”。

pointer_up(button=0)

button 排队一个 pointerUp 动作。

参数:

button – 要执行操作的指针按钮。默认值:0,表示主设备按钮。

scroll(x, y, delta_x, delta_y, duration=None, origin=None)

排队一个滚动动作。

参数:
  • x – 指针的目标 x 轴坐标(以 CSS 像素为单位)。

  • y – 指针的目标 y 轴坐标(以 CSS 像素为单位)。

  • delta_x – x 轴的滚动增量(以 CSS 像素为单位)。

  • delta_y – y 轴的滚动增量(以 CSS 像素为单位)。

  • duration – 分配滚动操作所用的毫秒数。如果为 None,则远程端默认为 0。

  • origin – 坐标原点,可以是“viewport”、“pointer”或一个元素。如果为 None,则远程端默认为“viewport”。

send_keys(keys)

keys中的每个字符排队一个keyDown和keyUp操作。

参数:

keys – 用于执行按键操作的键字符串。

class marionette_driver.marionette.Actions(marionette)

基类: object

perform(actions=None)

通过从actions中的每个动作序列中获取tick来执行动作。

参数:

actions – 输入源动作序列列表。可以使用ActionSequence.dict创建单个动作序列。

release()
sequence(*args, **kwargs)

返回指定类型的空ActionSequence。

有关参数列表,请参见ActionSequence。

class marionette_driver.marionette.Alert(marionette)

基类: object

用于与警报交互的类。

Alert(marionette).accept()
Alert(marionette).dismiss()
accept()

接受当前显示的模态对话框。

dismiss()

关闭当前显示的模态对话框。

send_keys(*string)

将键发送到打开的选项卡模态对话框中的当前显示的文本输入区域。

property text

返回选项卡模态中当前显示的文本。

class marionette_driver.marionette.Marionette(host='127.0.0.1', port=2828, app=None, bin=None, baseurl=None, socket_timeout=None, startup_timeout=None, **instance_args)

基类: object

表示与浏览器或设备的Marionette连接。

CONTEXT_CHROME = 'chrome'
CONTEXT_CONTENT = 'content'
DEFAULT_SHUTDOWN_TIMEOUT = 70
DEFAULT_SOCKET_TIMEOUT = 360
DEFAULT_STARTUP_TIMEOUT = 120
absolute_url(relative_url)

返回Marionette的www目录中提供的文件的绝对URL。

参数:

relative_url – 静态文件的URL,相对于Marionette的www目录。

向当前会话添加cookie。

参数:

cookie – 字典对象,包含必需的键 - “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})
check_for_crash()

检查进程是否崩溃。

返回值:

如果自上次调用该方法以来发生了崩溃,则返回True。

static check_port_available(port, host='')

检查“host:port”是否可用。

如果端口不可用,则引发socket.error。

property chrome_window_handles

获取当前打开的Chrome窗口列表。

每个窗口句柄由服务器分配,返回的字符串列表没有保证的顺序。

返回值:

作为字符串的唯一Chrome窗口句柄的无序列表

cleanup()
clear_pref(pref)

从指定的首选项中清除用户定义的值。

参数:

pref – 首选项的名称。

close()

关闭当前窗口,如果它是当前打开的最后一个窗口,则结束会话。

返回值:

作为字符串的剩余唯一窗口句柄的无序列表

close_chrome_window()

关闭当前选定的Chrome窗口,如果它是最后一个打开的窗口,则结束会话。

返回值:

作为字符串的剩余唯一Chrome窗口句柄的无序列表

static convert_keys(*string)
property current_chrome_window_handle

获取当前Chrome窗口的句柄。对应于一个Chrome窗口,该窗口本身可能包含由window_handles标识的选项卡。

返回分配给此窗口的不透明服务器分配的标识符,该标识符在此Marionette实例中唯一标识它。这可以在以后用于切换到此窗口。

返回值:

唯一的窗口句柄

返回类型:

字符串

property current_window_handle

获取当前窗口的句柄。

返回分配给此窗口的不透明服务器分配的标识符,该标识符在此Marionette实例中唯一标识它。这可以在以后用于切换到此窗口。

返回值:

唯一的窗口句柄

返回类型:

字符串

delete_all_cookies()

删除当前会话范围内的所有cookie。

用法示例

driver.delete_all_cookies()

按名称删除cookie。

参数:

name – 要删除的cookie的名称。

用法示例

driver.delete_cookie("foo")
delete_session(send_request=True)

关闭当前会话并断开与服务器的连接。

参数:

send_request – 可选,如果为True,则会发送一个请求以在服务器端关闭会话。例如,在in_app restart()或quit()的情况下,使用False,因为它们本身会触发删除。默认为True

enforce_gecko_prefs(prefs)

检查正在运行的实例是否具有给定的首选项。如果没有,它将终止当前正在运行的实例,并使用请求的首选项生成一个新实例。

参数:

prefs – 一个字典,其键是首选项名称。

execute_async_script(script, script_args=(), new_sandbox=True, sandbox='default', script_timeout=None)

执行异步JavaScript脚本,并返回结果(如果脚本不返回值,则返回None)。

脚本在由最近的set_context()调用设置的上下文中执行,或者如果set_context()未被调用,则在CONTEXT_CONTENT上下文中执行。

参数:
  • script – 包含要执行的JavaScript的字符串。

  • script_args – 要传递给脚本的参数的iterable。

  • new_sandbox – 如果为False,则保留上次execute_*script调用的全局变量。默认情况下为True,在这种情况下,不会保留任何全局变量。

  • sandbox – 指向您希望使用的沙箱的标签;如果您指定一个新标签,则会创建一个新的沙箱。如果您使用特殊标签system,则将使用具有提升权限的系统主体创建沙箱。

  • script_timeout – 以毫秒为单位的超时,覆盖会话的默认脚本超时。

用法示例

marionette.timeout.script = 10
result = self.marionette.execute_async_script('''
  // this script waits 5 seconds, and then returns the number 1
  let [resolve] = arguments;
  setTimeout(function() {
    resolve(1);
  }, 5000);
''')
assert result == 1
execute_script(script, script_args=(), new_sandbox=True, sandbox='default', script_timeout=None)

执行同步 JavaScript 脚本,并返回结果(如果脚本没有返回值则返回 None)。

脚本在由最近的set_context()调用设置的上下文中执行,或者如果set_context()未被调用,则在CONTEXT_CONTENT上下文中执行。

参数:
  • script – 包含要执行的JavaScript的字符串。

  • script_args – 要传递给脚本的参数的iterable。

  • new_sandbox – 如果为False,则保留上次execute_*script调用的全局变量。默认情况下为True,在这种情况下,不会保留任何全局变量。

  • sandbox – 指向您希望使用的沙箱的标签;如果您指定一个新标签,则会创建一个新的沙箱。如果您使用特殊标签system,则将使用具有提升权限的系统主体创建沙箱。

  • script_timeout – 以毫秒为单位的超时,覆盖会话的默认脚本超时。

简单的使用示例

result = marionette.execute_script("return 1;")
assert result == 1

您可以使用 script_args 参数向脚本传递参数。

result = marionette.execute_script("return arguments[0] + arguments[1];",
                                   script_args=(2, 3,))
assert result == 5
some_element = marionette.find_element(By.ID, "someElement")
sid = marionette.execute_script("return arguments[0].id;", script_args=(some_element,))
assert some_element.get_attribute("id") == sid

希望访问 window 对象非标准属性的脚本必须使用 window.wrappedJSObject。

result = marionette.execute_script('''
  window.wrappedJSObject.test1 = "foo";
  window.wrappedJSObject.test2 = "bar";
  return window.wrappedJSObject.test1 + window.wrappedJSObject.test2;
  ''')
assert result == "foobar"

默认情况下,各个脚本设置的全局变量在脚本调用之间不会持久化。如果您希望在脚本调用之间持久化数据,您可以在下次调用时将 new_sandbox 设置为 False,并将任何新变量添加到新的“全局”对象中,如下所示:

marionette.execute_script("global.test1 = 'foo';")
result = self.marionette.execute_script("return global.test1;", new_sandbox=False)
assert result == "foo"
find_element(method, target, id=None)

返回一个与当前上下文中指定的 method 和 target 匹配的 WebElement 实例。

可以使用 WebElement 实例对元素调用其他方法,例如 click()。如果未立即找到元素,则会尝试查找元素,最多持续 marionette_driver.timeout.Timeouts.implicit 设置的时间量。如果多个元素匹配给定条件,则仅返回第一个元素。如果没有任何元素匹配,则会引发 NoSuchElementException

参数:
  • method – 用于查找元素的方法;可以是以下之一:“id”、“name”、“class name”、“tag name”、“css selector”、“link text”、“partial link text” 和 “xpath”。请注意,chrome DOM 不支持“name”、“link text” 和“partial link test” 方法。

  • target – 搜索的目标。例如,如果 method = “tag”,则 target 可能等于“div”。如果 method = “id”,则 target 将是元素 ID。

  • id – 如果指定,则仅在具有指定 ID 的元素内部搜索元素。

find_elements(method, target, id=None)

返回与当前上下文中指定的 method 和 target 匹配的所有 WebElement 实例的列表。

可以使用 WebElement 实例对元素调用其他方法,例如 click()。如果未立即找到元素,则会尝试查找元素,最多持续 marionette_driver.timeout.Timeouts.implicit 设置的时间量。

参数:
  • method – 用于查找元素的方法;可以是以下之一:“id”、“name”、“class name”、“tag name”、“css selector”、“link text”、“partial link text” 和 “xpath”。请注意,chrome DOM 不支持“name”、“link text” 和“partial link test” 方法。

  • target – 搜索的目标。例如,如果 method = “tag”,则 target 可能等于“div”。如果 method = “id”,则 target 将是元素 ID。

  • id – 如果指定,则仅在具有指定 ID 的元素内部搜索元素。

fullscreen()

同步将用户代理窗口设置为全屏,就像用户执行了“查看 > 进入全屏”操作一样,或者如果它已处于全屏状态则将其恢复。

返回值:

窗口矩形。

get_active_element()

按名称获取单个 cookie。如果找到则返回 cookie,否则返回 None。

参数:

name – 要获取的 cookie 的名称。

get_cookies()

获取当前域的所有 cookie。

这相当于调用 document.cookie 并解析结果。

返回值:

当前域的 cookie 列表。

get_pref(pref, default_branch=False, value_type='unspecified')

获取指定首选项的值。

参数:
  • pref – 首选项的名称。

  • default_branch – 可选,如果 True,则首选项值将从默认分支读取。否则,如果设置了用户定义的值,则返回该值。默认为 False

  • value_type – 可选,首选项复杂值的 XPCOM 接口。可能的值为:nsIFilensIPrefLocalizedString

用法示例

marionette.get_pref("browser.tabs.warnOnClose")
get_url()

获取表示当前 URL 的字符串。

在桌面端,这将返回当前顶级浏览上下文的 URL 的字符串表示形式。这相当于 document.location.href。

在 chrome 上下文中,这将返回当前资源的规范 URL。

返回值:

URL 的字符串表示形式。

get_window_type()

获取 Marionette 当前正在操作的窗口的 windowtype 属性。

此命令仅在 chrome 上下文中才有意义。您可以使用此方法来区分浏览器窗口和编辑器窗口。

go_back()

使浏览器执行后退导航。

go_forward()

使浏览器执行前进导航。

maximize_window()

调整当前接收命令的浏览器窗口的大小。此操作应等效于用户按下操作系统窗口中的最大化按钮。

请注意,此命令在 Fennec 上不可用。在某些窗口管理器中也可能不可用。

返回值:

窗口矩形。

minimize_window()

将当前接收命令的浏览器窗口最小化。此操作应等效于用户按下操作系统窗口中的最小化按钮。

请注意,此命令在 Fennec 上不可用。在某些窗口管理器中也可能不可用。

:返回窗口矩形。

navigate(url)

导航到给定的 url

将当前顶级浏览上下文的 content frame 导航到给定的 URL,并在文档加载或会话的页面超时持续时间到期之前返回。

如果加载文档时出错或 URL 被阻止,则命令将返回失败。如果无法访问主机、URL 格式错误、页面受限(about:* 页面)或存在证书问题,则可能会发生这种情况,仅举几例。

当与 window 关联的 frame 元素上的 DOMContentLoaded 事件触发且 document.readyState 为“complete”时,文档被视为已成功加载。

在 chrome 上下文中,它将当前 window 的位置更改为提供的 URL,并等待 document.readyState 等于“complete”或页面超时持续时间到期。

参数:

url – 要导航到的 URL。

open(type=None, focus=False, private=False)

打开一个新的窗口或选项卡,具体取决于指定的上下文类型。

如果没有给出上下文类型,应用程序将根据选项卡和窗口支持选择最佳选项。

参数:
  • type – 要打开的窗口类型。可以是“tab”或“window”之一。

  • focus – 如果为 true,则打开的窗口将获得焦点。

  • private – 如果为 true,则打开一个隐私窗口。

返回值:

包含新窗口句柄和打开窗口类型的字典。

property orientation

获取当前浏览器的方向。

将返回有效的首要方向值之一:portrait-primary、landscape-primary、portrait-secondary 或 landscape-secondary。

property page_source

DOM 的字符串表示形式。

property profile_path
quit(clean=False, in_app=True, callback=None)

默认情况下,此方法将触发当前正在运行的实例的正常关闭。但它也可用于强制终止进程。

此命令将删除活动 marionette 会话。它还允许在应用程序未运行时操作例如配置文件数据。要再次启动应用程序,必须调用 start_session()

参数:
  • clean – 如果为 True,则在应用程序下次启动后将使用新的配置文件。请注意,在应用程序中发起的退出始终保持相同的配置文件。

  • in_app – 如果为 True,则 marionette 将在应用程序内部导致退出。否则,应用程序将通过终止进程立即重新启动。

  • callback – 如果提供且 in_app 为 True,则回调将用于触发关闭。

返回值:

包含应用程序关闭详细信息的字典。cause 属性反映原因,forced 指示某些内容阻止了关闭,并且必须强制应用程序关闭。

raise_for_port(timeout=None, check_process_status=True)

如果无法建立连接,则引发 socket.timeout。

参数:
  • timeout – 可选,服务器准备就绪的超时时间(以秒为单位)。

  • check_process_status – 可选,如果 True,则会持续检查进程是否已退出,并且连接尝试将被中止。

refresh()

使浏览器执行刷新当前页面的操作。

restart(callback=None, clean=False, in_app=True, safe_mode=False, silent=False)

默认情况下,此方法将通过使用相同的配置文件重新启动当前正在运行的实例。但它也可用于强制终止当前正在运行的实例,并使用相同或不同的配置文件生成新的实例。

参数:
  • callback – 如果提供且 in_app 为 True,则回调将用于触发重新启动。

  • clean – 如果为 True,则在重新启动后将使用新的配置文件。请注意,在应用程序中发起的重新启动始终保持相同的配置文件。

  • in_app – 如果为 True,则 marionette 将在应用程序内部导致重新启动。否则,应用程序将通过终止进程立即重新启动。

  • safe_mode – 可选标志,指示应用程序必须以安全模式重新启动。

  • silent – 可选标志,指示应用程序在重新启动后不应打开任何窗口。请注意,此标志仅在 MacOS 上受支持,并且需要将“in_app”设置为 True。

返回值:

包含应用程序重新启动详细信息的字典。 cause 属性反映原因,forced 指示某些内容阻止了关闭,并且应用程序必须强制关闭。

save_screenshot(fh, element=None, full=True, scroll=True)

截取网页元素或当前帧的屏幕截图,并将其保存到文件句柄中。

它是 screenshot() 的包装器:param fh:保存屏幕截图的文件句柄。

其余参数的定义与 screenshot() 中相同。

screenshot(element=None, format='base64', full=True, scroll=True)

截取网页元素或当前帧的屏幕截图。

默认情况下,屏幕截图作为无损 PNG 图像以 base 64 字符串的形式返回。如果定义了 element 参数,则捕获区域将限制为此元素的边界框。否则,捕获区域将是当前帧的边界框。

参数:
  • element – 要截取屏幕截图的元素。如果为 None,将截取当前帧的屏幕截图。

  • format – 如果为“base64”(默认值),则将屏幕截图作为 base64 字符串返回。如果为“binary”,则数据将被解码并作为原始二进制数据返回。如果为“hash”,则使用 SHA-256 算法对数据进行哈希处理,并将结果作为十六进制摘要返回。

  • full – 如果为 True(默认值),则捕获区域将是完整的帧。否则,仅捕获视口。仅当 element 为 None 时适用。

  • scroll – 当提供 element 时,在截取屏幕截图之前滚动到它(默认值)。否则,避免将 element 滚动到视图中。

property session_capabilities

表示当前会话功能的 JSON 字典。

set_context(context)

设置 Marionette 命令正在运行的上下文。

参数:

context – 上下文,可以是类属性 CONTEXT_CHROMECONTEXT_CONTENT 之一。

用法示例

marionette.set_context(marionette.CONTEXT_CHROME)
set_orientation(orientation)

设置当前浏览器方向。

提供的方向应作为有效方向值之一给出。如果方向未知,则会引发错误。

有效方向为“portrait”和“landscape”,分别回退到“portrait-primary”和“landscape-primary”,以及“portrait-secondary”和“landscape-secondary”。

参数:

orientation – 要锁定屏幕的方向。

set_permission(descriptor, state)

设置当前页面来源的权限。

set_pref(pref, value, default_branch=False)

设置指定首选项的值。

参数:
  • pref – 首选项的名称。

  • value – 要设置的首选项的值。如果值为 None,则将首选项重置为其默认值。如果不存在默认值,则首选项将不再存在。

  • default_branch – 可选,如果为 True,则首选项值将写入默认分支,并将保留到应用程序重新启动为止。否则将设置用户定义的值。默认为 False

用法示例

marionette.set_pref("browser.tabs.warnOnClose", True)
set_prefs(prefs, default_branch=False)

设置一系列首选项的值。

参数:
  • prefs – 包含一个或多个首选项及其要设置的值的字典。有关详细信息,请参阅 set_pref()

  • default_branch – 可选,如果为 True,则首选项值将写入默认分支,并将保留到应用程序重新启动为止。否则将设置用户定义的值。默认为 False

用法示例

marionette.set_prefs({"browser.tabs.warnOnClose": True})
set_window_rect(x=None, y=None, height=None, width=None)

设置当前窗口的位置和大小。

提供的宽度和高度值指的是窗口 outerWidth 和 outerHeight 值,其中包括滚动条、标题栏等。

如果请求的窗口大小会导致窗口处于最大化状态,则会返回错误。

参数:
  • x – 窗口左上角的 x 坐标

  • y – 窗口左上角的 y 坐标

  • width – 要调整窗口大小到的宽度。

  • height – 要调整窗口大小到的高度。

start_binary(timeout)
start_session(capabilities=None, process_forked=False, timeout=None)

创建新的 WebDriver 会话。在执行任何其他操作之前必须调用此方法。

参数:
  • capabilities – Marionette 识别功能的可选字典。它不接受符合 WebDriver 的功能字典(包括 alwaysMatch、firstMatch、desiredCapabilities 或 requriedCapabilities),并且仅识别特定于 Marionette 的扩展功能。

  • process_forked – 如果为 True,则现有进程由于

内部重新启动而自行派生。:param timeout: 服务器准备就绪的可选超时时间(以秒为单位)。

返回值:

提供的功能字典。

switch_to_alert()

返回一个 Alert 对象,用于与当前显示的警报进行交互。

alert = self.marionette.switch_to_alert()
text = alert.text
alert.accept()
switch_to_default_content()

将当前上下文切换到页面的默认内容。

switch_to_frame(frame=None)

将当前上下文切换到指定的框架。如果适用,后续命令将在指定框架的上下文中运行。

参数:

frame – 对要切换到的框架的引用。这可以是 WebElement 或整数索引。如果您在不带参数的情况下调用 switch_to_frame,它将切换到顶级框架。

switch_to_parent_frame()

切换到父框架

switch_to_window(handle, focus=True)

切换到指定的窗口;后续命令将定向到新窗口。

参数:
  • handle – 要切换到的窗口的 ID。

  • focus – 布尔值,用于确定是否聚焦我们刚刚切换到的窗口。

property test_name
property title

活动窗口的当前标题。

using_context(context)

使用 with 语句设置 Marionette 命令正在运行的上下文。服务器上的上下文状态在进入块之前保存,并在退出块后恢复。

参数:

context – 上下文,可以是类属性 CONTEXT_CHROMECONTEXT_CONTENT 之一。

用法示例

with marionette.using_context(marionette.CONTEXT_CHROME):
    # chrome scope
    ... do stuff ...
using_prefs(prefs, default_branch=False)

为在 with 块中执行的代码设置首选项,并在退出时恢复它们。

参数:
  • prefs – 包含一个或多个首选项及其要设置的值的字典。有关详细信息,请参阅 set_prefs()

  • default_branch – 可选,如果为 True,则首选项值将写入默认分支,并将保留到应用程序重新启动为止。否则将设置用户定义的值。默认为 False

用法示例

with marionette.using_prefs({"browser.tabs.warnOnClose": True}):
    # ... do stuff ...
property window_handles

获取当前上下文中的窗口列表。

如果在内容上下文中调用,它将返回对所有可用浏览器窗口的引用列表。

每个窗口句柄由服务器分配,返回的字符串列表没有保证的顺序。

返回值:

作为字符串的唯一窗口句柄的无序列表

property window_rect
class marionette_driver.marionette.MouseButton

基类: object

鼠标按钮常量的类似枚举的类。

LEFT = 0
MIDDLE = 1
RIGHT = 2
class marionette_driver.marionette.ShadowRoot(marionette, id, kind='shadow-6066-11e4-a52e-4f735466cecf')

基类: object

用于处理 Shadow Roots 的类

find_element(method, target)

返回一个 WebElement 实例,该实例与指定的 method 和 target 匹配,相对于当前的 shadow root。

有关此函数的更多详细信息,请参阅 Marionette 类中的 find_element() 方法。

find_elements(method, target)
返回当前 Shadow Root 中与指定方法和目标匹配的所有 WebElement 实例的列表。

在当前的 Shadow Root 中,根据指定的方法和目标返回所有匹配的 WebElement 实例。

有关此函数的更多详细信息,请参阅 Marionette 类中的 find_elements() 方法。

identifiers = ('shadow-6066-11e4-a52e-4f735466cecf',)
class marionette_driver.marionette.WebElement(marionette, id, kind='element-6066-11e4-a52e-4f735466cecf')

基类: object

表示一个 DOM 元素。

clear()

清除元素的输入内容。

click()

模拟在元素上单击。

property computed_label

获取当前元素的计算出的辅助功能标签。

property computed_role

获取当前元素的计算出的辅助功能角色。

find_element(method, target)

返回相对于当前元素匹配指定方法和目标的 WebElement 实例。

有关此函数的更多详细信息,请参阅 Marionette 类中的 find_element() 方法。

find_elements(method, target)

返回当前上下文中与指定方法和目标匹配的所有 WebElement 实例的列表。

有关此函数的更多详细信息,请参阅 Marionette 类中的 find_elements() 方法。

get_attribute(name)

返回请求的属性,如果未设置任何属性,则返回 None。

get_property(name)

返回请求的属性,如果属性未设置,则返回 None。

identifiers = ('element-6066-11e4-a52e-4f735466cecf',)
is_displayed()

如果元素显示,则返回 True,否则返回 False。

is_enabled()

如果满足以下所有条件,则此命令将返回 False,否则返回 True

  • 表单控件已禁用。

  • WebElement 具有禁用的布尔属性。

is_selected()

如果元素已选中,则返回 True。

property rect

获取元素的边界矩形。

这将返回一个包含以下内容的字典:

  • x 和 y 代表 WebElement 相对于文档左上角的左上角坐标。

  • height 和 width 将包含 WebElement 的 DOMRect 的高度和宽度。

send_keys(*strings)

通过合成的按键按下操作将字符串发送到元素。如果传递类似于 marionette.send_keys(Keys.SHIFT, “a”) 的数组,它将被连接成一个字符串。如果传递类似于 marionette.send_keys(1234) 的整数,它将被强制转换为字符串。

property shadow_root

获取当前元素的 Shadow Root。

property tag_name

元素的标签名称。

property text

返回元素及其子元素的可见文本。

value_of_css_property(property_name)

获取指定 CSS 属性名称的值。

参数:

property_name – 要获取其值的属性名称。

class marionette_driver.marionette.WebFrame(marionette, id, kind='frame-075b-4da1-b6ba-e579c2d3230a')

基类: object

用于处理框架窗口的类。

identifiers = ('frame-075b-4da1-b6ba-e579c2d3230a',)
class marionette_driver.marionette.WebWindow(marionette, id, kind='window-fcc6-11e5-b4f8-330a88ab9d7f')

基类: object

用于处理顶级窗口的类。

identifiers = ('window-fcc6-11e5-b4f8-330a88ab9d7f',)

marionette_driver.processhandler 模块

marionette_driver.timeout 模块

class marionette_driver.timeout.Timeouts(marionette)

基类: object

管理 Marionette 会话中的超时设置。

用法

marionette = Marionette(...)
marionette.start_session()
marionette.timeout.page_load = 10
marionette.timeout.page_load
# => 10
property implicit

获取会话的隐式等待超时。这指定在检索元素时等待隐式元素定位策略的时间。默认情况下禁用(0 秒)。

property page_load

获取会话的页面加载超时。这指定等待页面加载完成的时间。默认情况下为 5 分钟(或 300 秒)。

reset()

将超时重置为其默认值。

property script

获取会话的脚本超时。这指定在中断注入的脚本之前等待它们完成的时间。默认情况下为 30 秒。

marionette_driver.transport 模块

class marionette_driver.transport.Command(msgid, name, params)

基类:Message

TYPE = 0
static from_msg(data)
to_msg()
class marionette_driver.transport.Message(msgid)

基类: object

class marionette_driver.transport.Response(msgid, error, result)

基类:Message

TYPE = 1
静态 from_msg(data)
to_msg()
marionette_driver.transport.SocketContext(host, port, timeout)

基类: object

用于保护套接字访问的锁对象。

必须使用此对象作为上下文管理器来访问套接字;在上下文之外访问套接字将绕过锁。

属性 socket_timeout
marionette_driver.transport.SocketTimeout(socket_ctx, timeout)

基类: object

marionette_driver.transport.TcpTransport(host, port, socket_timeout=60.0)

基类: object

通过 TCP 与 Marionette 通信的套接字客户端。

它使用 Gecko 中远程调试器的协议,其中消息始终以消息长度和冒号开头,例如:

7:MESSAGE

在此协议之上,它使用 Marionette 消息格式,该格式根据远程服务器提供的协议级别而有所不同。支持的协议级别为 min_protocol_level 及以上。

close()

关闭套接字。

首先强制套接字不再发送数据,然后显式关闭它以释放其资源。

参见:https://docs.pythonlang.cn/2/howto/sockets.html#disconnecting

connect()

连接到服务器并处理我们期望接收的 hello 消息。

返回协议级别和应用程序类型的元组。

max_packet_length = 4096
min_protocol_level = 3
receive(unmarshal=True)

等待来自远程的下一个完整响应。

数据包格式为长度前缀的 JSON

packet = digit+ “:” body digit = “0”-“9” body = JSON 文本

参数:

unmarshal – 默认情况下会反序列化数据包并返回 Message 类型。将其设置为 false 将返回原始数据包。

request(name, params)

向远程服务器发送消息并等待响应返回。

respond(obj)

向命令发送响应。这可以是任意可 JSON 序列化的对象或 Exception

send(obj)

向远程服务器发送消息。允许的输入是 Message 实例或可 JSON 序列化的对象。

属性 socket_timeout

marionette_driver.wait 模块

marionette_driver.wait.SystemClock

基类: object

属性 now
sleep(duration)
marionette_driver.wait.Wait(marionette, timeout=None, interval=None, ignored_exceptions=None, clock=None)

基类: object

一个用于等待条件评估为真或非空的显式条件实用程序类。

这将重复评估条件,以期获得真值返回值,或其超时到期,或其等待谓词变为真。

Wait 实例定义了等待条件的最大时间量,以及检查条件的频率。此外,用户可以配置等待以忽略特定类型的异常,同时等待,例如在页面上搜索元素时忽略 errors.NoSuchElementException

until(condition, is_true=None, message='')

重复运行条件,直到其返回值评估为真,或其超时到期或谓词评估为真。

这将以给定的间隔轮询,直到达到给定的超时,或谓词或条件返回真。返回 null 或不评估为真的条件将在完全经过其超时后引发 errors.TimeoutException

如果在条件函数中引发异常且未被忽略,则此函数将立即引发异常。如果忽略异常,它将继续轮询条件,直到它成功返回或引发 TimeoutException

参数:
  • condition – 一个可调用的函数,如果其返回值评估为真,则此函数将返回该值。

  • is_true – 一个可选的谓词,当它评估为 False 时将终止并返回。它应该是一个将传递时钟和结束时间的函数。默认谓词将在时钟经过超时时终止等待。

  • message – 如果此函数超时,则可选地在异常的消息中包含的消息。

marionette_driver.wait.until_pred(clock, end)

marionette_driver.webauthn 模块

marionette_driver.webauthn.WebAuthn(marionette)

基类: object

add_credential(authenticator_id, credential)
add_virtual_authenticator(config)
get_credentials(authenticator_id)
remove_all_credentials(authenticator_id)
remove_credential(authenticator_id, credential_id)
remove_virtual_authenticator(authenticator_id)
set_user_verified(authenticator_id, uv)

模块内容