本文整理汇总了Python中marionette.Marionette.find_element方法的典型用法代码示例。如果您正苦于以下问题:Python Marionette.find_element方法的具体用法?Python Marionette.find_element怎么用?Python Marionette.find_element使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类marionette.Marionette
的用法示例。
在下文中一共展示了Marionette.find_element方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: set_up_device
# 需要导入模块: from marionette import Marionette [as 别名]
# 或者: from marionette.Marionette import find_element [as 别名]
def set_up_device(opt):
if not opt.wifi_ssid or not opt.wifi_key or not opt.wifi_pass:
raise ValueError('Missing --wifi options')
mc = Marionette('localhost', opt.adb_port)
for i in range(2):
try:
mc.start_session()
break
except socket.error:
sh('adb forward tcp:%s tcp:%s' % (opt.adb_port, opt.adb_port))
if opt.shell:
from pdb import set_trace
set_trace()
return
# watch out! This is how gaiatest does it.
mc.__class__ = type('Marionette', (Marionette, MarionetteTouchMixin), {})
device = GaiaDevice(mc)
device.restart_b2g()
apps = GaiaApps(mc)
data_layer = GaiaData(mc)
lockscreen = LockScreen(mc)
mc.setup_touch()
lockscreen.unlock()
apps.kill_all()
data_layer.enable_wifi()
if opt.wifi_key == 'WPA-PSK':
pass_key = 'psk'
elif opt.wifi_key == 'WEP':
pass_key = 'wep'
else:
assert 0, 'unknown key management'
data = {'ssid': opt.wifi_ssid, 'keyManagement': opt.wifi_key,
pass_key: opt.wifi_pass}
data_layer.connect_to_wifi(data)
mc.switch_to_frame()
all_apps = set(a['manifest']['name'] for a in get_installed(apps))
if 'Marketplace Dev' not in all_apps:
mc.execute_script(
'navigator.mozApps.install'
'("https://marketplace-dev.allizom.org/manifest.webapp");')
wait_for_element_displayed(mc, 'id', 'app-install-install-button')
yes = mc.find_element('id', 'app-install-install-button')
mc.tap(yes)
wait_for_element_displayed(mc, 'id', 'system-banner')
print 'Pushing payment prefs'
sh('adb shell stop b2g')
sh('adb push "%s" /data/local/user.js' % (
os.path.join(os.path.dirname(__file__), 'payment-prefs.js')))
sh('adb shell start b2g')
print 'When your device reboots, Marketplace Dev will be installed'
示例2: TestConsoleLogCapture
# 需要导入模块: from marionette import Marionette [as 别名]
# 或者: from marionette.Marionette import find_element [as 别名]
class TestConsoleLogCapture():
def setup(self):
try:
self.client = Marionette(host='localhost', port=2828)
self.client.start_session()
self.client.set_pref('general.warnOnAboutConfig', False)
except:
sys.exit("Could not find Firefox browser running")
def test_push_notification_received(self):
self.client.navigate("https://people.mozilla.org/~ewong2/push-notification-test/")
unregister_button = self.client.find_element(By.ID, "unreg_btn")
if unregister_button.is_displayed() == True:
unregister_button.click()
Wait(self.client, timeout=5, interval=1).until(expected.element_not_displayed(By.ID, "unreg_btn"))
Wait(self.client).until(expected.element_displayed(By.ID, "reg_btn"))
self.client.find_element(By.ID, "reg_btn").click()
Wait(self.client).until(expected.element_displayed(By.ID, "subscribe_btn"))
self.client.find_element(By.ID, "subscribe_btn").click()
Wait(self.client).until(expected.element_displayed(By.ID, "doXhr_btn"))
self.client.find_element(By.ID, "doXhr_btn").click()
result = self.web_console_filter_for_string("Received a push message")
assert result == 1
def web_console_filter_for_string(self, console_string=None):
self.client.set_context(self.client.CONTEXT_CHROME)
handles = self.client.window_handles
chrome_handles = self.client.chrome_window_handles
browser_handle = self.client.current_chrome_window_handle
notifications = 0
for handle in chrome_handles:
if handle != browser_handle:
console_handle = handle
self.client.switch_to_window(console_handle)
time.sleep(1)
results = self.client.find_elements(By.CLASS_NAME, "console-string")
for result in results:
if console_string in result.text:
notifications = notifications + 1
self.client.find_element(By.CLASS_NAME, "webconsole-clear-console-button").click()
return notifications
def tear_down(self):
self.client.close()
示例3: current_frame
# 需要导入模块: from marionette import Marionette [as 别名]
# 或者: from marionette.Marionette import find_element [as 别名]
class current_frame():
def main(self, p_snippet, p_frame_array=False):
#
# p_el is an array for the element.
# p_frame_array is a list of iframes to iterate through (optional).
#
self.marionette = Marionette(host='localhost', port=2828)
self.marionette.start_session()
self.marionette.set_search_timeout(1000)
self.actions = Actions(self.marionette)
#
# Switch to the correct iframe (unless it's "()").
#
self.marionette.switch_to_frame()
first_iframe = True
for x in p_frame_array:
# (just to make it look nice ;)
typ_str = "'" + x[0] + "'"
if first_iframe:
first_iframe = False
print ""
print "Switching to iframe with " + typ_str.rjust(10) + " = '" + x[1] + "'"
else:
print "... then to iframe with " + typ_str.rjust(10) + " = '" + x[1] + "'"
my_iframe = self.marionette.find_element("xpath", "//iframe[@" + x[0] + "='" + x[1] + "']")
self.marionette.switch_to_frame(my_iframe)
if first_iframe:
print ""
print "Using 'top level' iframe () ..."
# Run the code snippet.
print ""
print "Running code snippet from this location ..."
print ""
execfile(p_snippet)
示例4: current_frame
# 需要导入模块: from marionette import Marionette [as 别名]
# 或者: from marionette.Marionette import find_element [as 别名]
class current_frame():
def main(self, LOGDIR, p_el, p_frame_array=False):
#
# p_el is an array for the element.
# p_frame_array is a list of iframes to iterate through (optional).
#
self.marionette = Marionette(host='localhost', port=2828)
self.marionette.start_session()
self.marionette.set_search_timeout(1000)
#
# Switch to the correct iframe (unless it's "()").
#
self.marionette.switch_to_frame()
first_iframe = True
for x in p_frame_array:
# (just to make it look nice ;)
typ_str = "'" + x[0] + "'"
if first_iframe:
first_iframe = False
print ""
print "Switching to iframe with " + typ_str.rjust(10) + " = '" + x[1] + "'"
else:
print "... then to iframe with " + typ_str.rjust(10) + " = '" + x[1] + "'"
my_iframe = self.marionette.find_element("xpath", "//iframe[@" + x[0] + "='" + x[1] + "']")
self.marionette.switch_to_frame(my_iframe)
if first_iframe:
print ""
print "Using 'top level' iframe () ..."
#
# Grab a screenshot and html dump of this frame.
#
p_sfnam = LOGDIR + "screenshot.png"
p_hfnam = LOGDIR + "html_dump.html"
print ""
print "Screenshot of this frame saved to: " + p_sfnam
screenshot = self.marionette.screenshot()[22:]
with open(p_sfnam, 'w') as f:
f.write(base64.decodestring(screenshot))
f.close()
print "HTML dump of this frame saved to : " + p_hfnam
f = open(p_hfnam, 'w')
f.write(self.marionette.page_source.encode('ascii', 'ignore') )
f.close()
#
# Test to see if the element is present / displayed / etc...
#
print ""
print "Checking for element: " + str(p_el)
b_present = False
b_displayed = False
b_enabled = False
try:
x = self.marionette.find_element(*p_el)
if x:
b_present = True
if x.is_displayed():
b_displayed = True
if x.is_enabled():
b_enabled = True
except:
pass
print ""
print "Present : " + str(b_present)
print "Displayed: " + str(b_displayed)
print "Enabled : " + str(b_enabled)
print ""
示例5: B2gExecutor
# 需要导入模块: from marionette import Marionette [as 别名]
# 或者: from marionette.Marionette import find_element [as 别名]
class B2gExecutor(Executor):
def __init__(self, app_name, app_id, device=False):
self.device = device
if self.device:
call(['adb', 'forward', 'tcp:2828', 'tcp:2828'])
self._app_name = app_name
self._app_id = app_id
self._marionette = Marionette()
self._marionette.start_session()
self._gaia_apps = GaiaApps(self._marionette)
self._gaia_data = GaiaData(self._marionette)
self._gaia_device = GaiaDevice(self._marionette)
''' Deprecated
# https://github.com/mozilla-b2g/gaia/blob/b568b7ae8adb6ee3651bd75acbaaedff86a08912/tests/python/gaia-ui-tests/gaiatest/gaia_test.py
js = os.path.abspath(os.path.join(__file__, os.path.pardir, 'atoms', "gaia_apps.js"))
self._marionette.import_script(js)
js = os.path.abspath(os.path.join(__file__, os.path.pardir, 'atoms', "gaia_data_layer.js"))
self._marionette.set_context(self._marionette.CONTEXT_CHROME)
self._marionette.import_script(js)
self._marionette.set_context(self._marionette.CONTEXT_CONTENT)
# C:\Users\Jun-Wei\Desktop\b2g\battery\manifest.webapp
#app = GaiaApps(self._marionette).launch(self._app_name)
#app = GaiaApps(self._marionette).launch('Battery', manifest_url='C:/Users/Jun-Wei/Desktop/b2g/battery/manifest.webapp', entry_point='/index.html')
app = GaiaApps(self._marionette).launch('Battery')
print app.frame
print app.src
print app.origin
print app.name
#print g_app.manifest_url
#self._app_frame = g_app.frame
self._app_frame_id = app.frame
self._app_src = app.src
self._app_origin = app.origin
#self.app_manifest_url = g_app.manifest_url
#self.gaia_apps = GaiaApps(self.__marionette)
#print self.gaia_apps.displayed_app.name
#print self.gaia_apps.installed_apps
#print self.gaia_apps.running_apps()
#js = os.path.abspath(os.path.join(__file__, os.path.pardir, 'atoms', "gaia_apps.js"))
#self.__marionette.import_script(js)
'''
def fire_event(self, clickable):
logger.info('fire_event: id: %s (xpath: %s)', clickable.get_id(), clickable.get_xpath())
try:
# id staring with DomAnalyzer.serial_prefix is given by our monkey and should be ignored when locating
if clickable.get_id() and not clickable.get_id().startswith(DomAnalyzer.serial_prefix):
self._marionette.find_element('id', clickable.get_id()).tap()
elif clickable.get_xpath():
self._marionette.find_element('xpath', clickable.get_xpath()).tap()
else:
logger.error('No id nor xpath for the clickable: id: %s (xpath: %s)', clickable.get_id(), clickable.get_xpath())
sys.exit()
except (ElementNotVisibleException, InvalidElementStateException, NoSuchElementException):
logger.info('Element is not interactable in fire_event(): id: %s (xpath: %s)', clickable.get_id(), clickable.get_xpath())
except Exception as e:
logger.error('Unknown Exception: %s in fire_event(): id: %s (xpath: %s)', str(e), clickable.get_id(), clickable.get_xpath())
sys.exit()
def fill_form(self, clickable):
for f in clickable.get_forms():
for input_field in f.get_inputs():
try:
if input_field.get_id() and not input_field.get_id().startswith(DomAnalyzer.serial_prefix):
self._marionette.find_element('id', input_field.get_id()).send_keys(input_field.get_value())
elif input_field.get_xpath():
self._marionette.find_element('xpath', input_field.get_xpath()).send_keys(input_field.get_value())
else:
logger.error('No id nor xpath for an input field in the form id: %s (xpath: %s)', f.get_id(), f.get_xpath())
sys.exit()
except (ElementNotVisibleException, InvalidElementStateException, NoSuchElementException):
logger.info('Element is not interactable in fill_form(): id: %s (xpath: %s)', f.get_id(), f.get_xpath())
except Exception as e:
logger.error('Unknown Exception: %s in fill_form(): id: %s (xpath: %s)', str(e), f.get_id(), f.get_xpath())
sys.exit()
def empty_form(self, clickable):
for f in clickable.get_forms():
for input_field in f.get_inputs():
try:
if input_field.get_id() and not input_field.get_id().startswith(DomAnalyzer.serial_prefix):
self._marionette.find_element('id', input_field.get_id()).clear()
elif input_field.get_xpath():
self._marionette.find_element('xpath', input_field.get_xpath()).clear()
else:
logger.error('No id nor xpath for an input field in the form %s (%s)', f.get_id(), f.get_xpath())
sys.exit()
except (ElementNotVisibleException, InvalidElementStateException, NoSuchElementException):
logger.info('Element is not interactable in empty_form(): id: %s (xpath: %s)', f.get_id(), f.get_xpath())
except Exception as e:
logger.error('Unknown Exception: %s in empty_form(): id: %s (xpath: %s)', str(e), f.get_id(), f.get_xpath())
sys.exit()
def get_source(self):
return self._marionette.page_source.encode(sys.stdout.encoding, 'ignore')
#.........这里部分代码省略.........
示例6: Marionette
# 需要导入模块: from marionette import Marionette [as 别名]
# 或者: from marionette.Marionette import find_element [as 别名]
#encoding=utf-8
from marionette import Marionette
client = Marionette('localhost', port=2828)
client.start_session()
client.navigate('http://finance.sina.com.cn/stock/s/20150714/070922678344.shtml')#访问当前访问的网址
elem = client.find_element('xpath',"//*[@id='wrapOuter']/div/div[4]/span")
print(elem.text)
示例7: assert
# 需要导入模块: from marionette import Marionette [as 别名]
# 或者: from marionette.Marionette import find_element [as 别名]
assert(m.window == 'window2')
assert(m.close_window('window2'))
assert(m.set_script_timeout(1000))
assert(m.set_search_timeout(500))
assert(m.get_url() == server.TEST_URL)
assert(m.navigate(server.TEST_URL))
assert(m.go_back())
assert(m.go_forward())
assert(m.refresh())
assert(m.execute_script(server.TEST_EXECUTE_SCRIPT))
assert(m.execute_js_script(server.TEST_EXECUTE_SCRIPT))
assert(m.execute_js_script(server.TEST_EXECUTE_SCRIPT, server.TEST_EXECUTE_SCRIPT_ARGS))
assert(m.execute_script(server.TEST_EXECUTE_SCRIPT, server.TEST_EXECUTE_SCRIPT_ARGS))
assert(m.execute_async_script(server.TEST_EXECUTE_SCRIPT))
assert(m.execute_async_script(server.TEST_EXECUTE_SCRIPT, server.TEST_EXECUTE_SCRIPT_ARGS))
assert(str(m.find_element(HTMLElement.CLASS, 'heading')) == server.TEST_FIND_ELEMENT)
assert([str(x) for x in m.find_elements(HTMLElement.TAG, 'p')] == server.TEST_FIND_ELEMENTS)
assert(str(m.find_element(HTMLElement.CLASS, 'heading').find_element(HTMLElement.TAG, 'h1')) == server.TEST_FIND_ELEMENT)
assert([str(x) for x in m.find_element(HTMLElement.ID, 'div1').find_elements(HTMLElement.SELECTOR, '.main')] == \
server.TEST_FIND_ELEMENTS)
assert(m.find_element(HTMLElement.ID, 'id1').click())
assert(m.find_element(HTMLElement.ID, 'id2').text() == server.TEST_GET_TEXT)
assert(m.find_element(HTMLElement.ID, 'id3').send_keys('Mozilla Firefox'))
assert(m.find_element(HTMLElement.ID, 'id3').value() == server.TEST_GET_VALUE)
assert(m.find_element(HTMLElement.ID, 'id3').clear())
assert(m.find_element(HTMLElement.ID, 'id3').selected())
assert(m.find_element(HTMLElement.ID, 'id1').equals(m.find_element(HTMLElement.TAG, 'p')))
assert(m.find_element(HTMLElement.ID, 'id3').enabled())
assert(m.find_element(HTMLElement.ID, 'id3').displayed())
assert(m.find_element(HTMLElement.ID, 'id3').get_attribute('value') == server.TEST_GET_VALUE)
assert(m.delete_session())
示例8: uninstall_app
# 需要导入模块: from marionette import Marionette [as 别名]
# 或者: from marionette.Marionette import find_element [as 别名]
def uninstall_app(app_name, adb_path="adb", script_timeout=5000, marionette=None, device_serial=None):
"""
Uninstalls the given app.
NOTE: if a marionette session is passed, this function switches to the top-most frame.
"""
def check_uninstall(marionette):
uninstall = marionette.execute_script("return window.wrappedJSObject.uninstall;")
return uninstall != 'none'
def check_click_uninstall(marionette):
button = marionette.find_element('css selector', 'gaia-confirm .confirm')
try:
button.click()
not_displayed = not button.is_displayed()
except StaleElementException:
not_displayed = True
return not_displayed
dm = mozdevice.DeviceManagerADB(adbPath=adb_path, deviceSerial=device_serial)
installed_app_name = app_name.lower()
installed_app_name = installed_app_name.replace(" ", "-")
dm.forward("tcp:2828", "tcp:2828")
print 'requesting uninstall of app', app_name
if not marionette:
m = Marionette()
m.start_session()
else:
m = marionette
m.switch_to_frame()
m.set_context("chrome")
m.execute_script("""
Components.utils.import("resource://gre/modules/Services.jsm");
window.wrappedJSObject.uninstall = 'none';
Services.obs.addObserver(function observer(subject, topic) {
Services.obs.removeObserver(observer, topic);
window.wrappedJSObject.uninstall = 'ask';
}, "webapps-ask-uninstall", false);
Services.obs.addObserver(function observer(subject, topic) {
Services.obs.removeObserver(observer, topic);
window.wrappedJSObject.uninstall = 'uninstall';
}, "webapps-uninstall", false);
""")
m.set_context("content")
uninstall_app = """
var uninstallWithName = function(name) {
let apps = window.wrappedJSObject.applications || window.wrappedJSObject.Applications;
let installedApps = apps.installedApps;
for (let manifestURL in installedApps) {
let app = installedApps[manifestURL];
let origin = null;
let entryPoints = app.manifest.entry_points;
if (entryPoints) {
for (let ep in entryPoints) {
let currentEntryPoint = entryPoints[ep];
let appName = currentEntryPoint.name;
if (name == appName.toLowerCase()) {
window.wrappedJSObject.navigator.mozApps.mgmt.uninstall(app);
return true;
}
}
} else {
let appName = app.manifest.name;
if (name == appName.toLowerCase()) {
window.wrappedJSObject.navigator.mozApps.mgmt.uninstall(app);
return true;
}
}
}
return false;
};
return uninstallWithName("%s");
"""
m.set_script_timeout(script_timeout)
result = m.execute_script(uninstall_app % app_name.lower())
if result:
m.set_context("chrome")
Wait(m, 10).until(check_uninstall)
uninstall = m.execute_script("return window.wrappedJSObject.uninstall;")
m.set_context("content")
if uninstall == 'ask':
m.switch_to_frame()
Wait(m, 20).until(element_displayed(m.find_element('css selector', 'gaia-confirm .confirm')))
Wait(m, 20).until(check_click_uninstall)
if not marionette:
m.delete_session()
示例9: ftu
# 需要导入模块: from marionette import Marionette [as 别名]
# 或者: from marionette.Marionette import find_element [as 别名]
def ftu(locale, device_flags, hashes):
db = get_db(locale)
app = 'ftu'
app_categ = 'communications'
app_type = 'apps'
gaia_hash = hashes[0]
hg_hash = hashes[1]
screenshot_path = app_type + '/' + app_categ + '/' + app
create_screenshot_dir(locale, screenshot_path)
client = Marionette('localhost', 2828)
client.start_session()
change_screen_timeout(client)
ftu_iframe = client.find_element('css selector',"iframe[src='app://communications.gaiamobile.org/ftu/index.html']")
if client.switch_to_frame(ftu_iframe):
time.sleep(short_time)
# app://communications.gaiamobile.org/ftu/index.html#languages
file_name = 'languages'
screenshot_entry = {
"id" : file_name,
"script" : app,
"gaia" : gaia_hash,
"hg" : hg_hash,
"changed" : False,
"path" : screenshot_path}
test_flags = {}
if check_flags(test_flags, device_flags):
screenshot_entry.update(test_flags)
if take_screenshot(locale, screenshot_path, client, file_name):
screenshot_entry['changed'] = True
log_displayed_l10n_strings(client, db, app, app_categ, screenshot_entry, '#activation-screen')
# switch to app://communications.gaiamobile.org/ftu/index.html#data_3g (unlock-sim-screen screen)
next = client.find_element('css selector', '#forward')
next.tap()
time.sleep(short_time)
# app://communications.gaiamobile.org/ftu/index.html#data_3g (sim pin screen - unlock-sim-screen - 1st attempt)
file_name = 'data_3g-unlock_sim_screen-pin_screen'
screenshot_entry = {
"id" : file_name,
"script" : app,
"gaia" : gaia_hash,
"hg" : hg_hash,
"changed" : False,
"path" : screenshot_path}
test_flags = {
"sim": True,
"no-sim": False}
if check_flags(test_flags, device_flags):
screenshot_entry.update(test_flags)
if take_screenshot(locale, screenshot_path, client, file_name):
screenshot_entry['changed'] = True
log_displayed_l10n_strings(client, db, app, app_categ, screenshot_entry, '#unlock-sim-screen')
# invalid pin -> error about pin characters
# stay at app://communications.gaiamobile.org/ftu/index.html#data_3g (unlock-sim-screen screen)
next = client.find_element('css selector', '#unlock-sim-button')
next.tap()
time.sleep(short_time)
# app://communications.gaiamobile.org/ftu/index.html#data_3g (sim pin screen - unlock-sim-screen - pin error)
file_name = 'data_3g-unlock_sim_screen-pin_screen-invalid_pin'
screenshot_entry = {
"id" : file_name,
"script" : app,
"gaia" : gaia_hash,
"hg" : hg_hash,
"changed" : False,
"path" : screenshot_path}
test_flags = {
"sim": True,
"no-sim": False}
if check_flags(test_flags, device_flags):
screenshot_entry.update(test_flags)
if take_screenshot(locale, screenshot_path, client, file_name):
screenshot_entry['changed'] = True
log_displayed_l10n_strings(client, db, app, app_categ, screenshot_entry, '#unlock-sim-screen')
# insert wrong pin (attempt 1 of 3)
pin_input = client.find_element('css selector', '#pin-input')
pin_input.send_keys(wrong_sim_pin)
# stay at app://communications.gaiamobile.org/ftu/index.html#data_3g (unlock-sim-screen screen)
next = client.find_element('css selector', '#unlock-sim-button')
next.tap()
time.sleep(short_time)
# app://communications.gaiamobile.org/ftu/index.html#data_3g (sim pin screen - unlock-sim-screen - 2nd attempt)
#.........这里部分代码省略.........