精品专区-精品自拍9-精品自拍三级乱伦-精品自拍视频-精品自拍视频曝光-精品自拍小视频

網(wǎng)站建設(shè)資訊

NEWS

網(wǎng)站建設(shè)資訊

python如何實(shí)現(xiàn)PageFactory設(shè)計(jì)模式-創(chuàng)新互聯(lián)

這篇文章主要講解了python如何實(shí)現(xiàn)PageFactory設(shè)計(jì)模式,內(nèi)容清晰明了,對(duì)此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會(huì)有幫助。

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),桂平企業(yè)網(wǎng)站建設(shè),桂平品牌網(wǎng)站建設(shè),網(wǎng)站定制,桂平網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,桂平網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

前言

pageFactory的設(shè)計(jì)模式能在java里執(zhí)行的原因是java自帶了PageFactory類,而在python中沒(méi)有這樣的包,但是已經(jīng)有人寫好了pageFactory在python的包,可以拿來(lái)用

pageFactory 用于python支持的py文件

__all__ = ['cacheable', 'callable_find_by', 'property_find_by']
def cacheable_decorator(lookup):
  def func(self):
    if not hasattr(self, '_elements_cache'):
      self._elements_cache = {} # {callable_id: element(s)}
    cache = self._elements_cache

    key = id(lookup)
    if key not in cache:
      cache[key] = lookup(self)
    return cache[key]
  return func
cacheable = cacheable_decorator

_strategy_kwargs = ['id_', 'xpath', 'link_text', 'partial_link_text',
          'name', 'tag_name', 'class_name', 'css_selector']

def _callable_find_by(how, using, multiple, cacheable, context, driver_attr, **kwargs):
  def func(self):
    # context - driver or a certain element
    if context:
      ctx = context() if callable(context) else context.__get__(self) # or property
    else:
      ctx = getattr(self, driver_attr)

    # 'how' AND 'using' take precedence over keyword arguments
    if how and using:
      lookup = ctx.find_elements if multiple else ctx.find_element
      return lookup(how, using)

    if len(kwargs) != 1 or list(kwargs.keys())[0] not in _strategy_kwargs:
      raise ValueError(
        "If 'how' AND 'using' are not specified, one and only one of the following "
        "valid keyword arguments should be provided: %s." % _strategy_kwargs)

    key = list(kwargs.keys())[0];
    value = kwargs[key]
    suffix = key[:-1] if key.endswith('_') else key # find_element(s)_by_xxx
    prefix = 'find_elements_by' if multiple else 'find_element_by'
    lookup = getattr(ctx, '%s_%s' % (prefix, suffix))
    return lookup(value)

  return cacheable_decorator(func) if cacheable else func
def callable_find_by(how=None, using=None, multiple=False, cacheable=False, context=None, driver_attr='_driver',
           **kwargs):
  return _callable_find_by(how, using, multiple, cacheable, context, driver_attr, **kwargs)


def property_find_by(how=None, using=None, multiple=False, cacheable=False, context=None, driver_attr='_driver',
           **kwargs):
  return property(_callable_find_by(how, using, multiple, cacheable, context, driver_attr, **kwargs))

本文題目:python如何實(shí)現(xiàn)PageFactory設(shè)計(jì)模式-創(chuàng)新互聯(lián)
標(biāo)題URL:http://m.jcarcd.cn/article/dcjooc.html
主站蜘蛛池模板: 国产爽片在线观看 | 国产乱子伦视频三区 | 精品欧美乱伦 | 欧亚天堂在线播放 | 日本熟女多毛性爱 | 日韩一区二区三区波 | 韩国理论片在线看 | 日韩欧美国产精品区 | 国产激情一区在线观 | 国产精美视频 | 日韩亚洲国产中 | 午夜国产在线观看 | 成人公开在线导航网 | 成人玖玖| 成人九九九 | 国产精品视频全 | 国产精品专区六区 | 日韩色婷| 国产精品玉足视频 | 岛国精品在线观看 | 国产91区| 国产人成亚 | 福利片成人 | 午夜激情成人 | 国产精选免 | 乱伦故事 | 三级国产精品 | 午夜福利电影影院 | 国产偷窥熟女精 | 欧美日韩在线观看 | 日韩精品综| 日韩精品在线观看 | 日韩欧美精品123 | 另类激情文学一 | 国产精品专区第一页 | 乱码一区二区三区 | 国产欧美日韩第一页 | 日韩在线高清 | 国产精品视频视 | 国产乱了真| 国产欧美精品区一区 |