最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PageFactory設(shè)計(jì)模式基于python實(shí)現(xiàn)

 更新時(shí)間:2020年04月14日 11:36:08   作者:seyOrd  
這篇文章主要介紹了PageFactory設(shè)計(jì)模式基于python實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

前言

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))

調(diào)用的例子

from pageobject_support import callable_find_by as by
from selenium import webdriver
from time import sleep
class BaiduSearchPage(object):
  def __init__(self, driver):
    self._driver = driver #初始化瀏覽器的api
  search_box = by(id_="kw")
  search_button = by(id_='su')
  def search(self, keywords):
    self.search_box().clear()
    self.search_box().send_keys(keywords)
    self.search_button().click()

支持的定位api

  • id_ (為避免與內(nèi)置的關(guān)鍵字ID沖突,所以多了個(gè)下劃線的后綴)
  • name
  • class_name
  • css_selector
  • tag_name
  • xpath
  • link_text
  • partial_link_text

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python批量爬取下載抖音視頻

    python批量爬取下載抖音視頻

    這篇文章主要為大家詳細(xì)介紹了python批量爬取下載抖音視頻,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • python星號(hào)(*)和雙星號(hào)(**)?函數(shù)動(dòng)態(tài)參數(shù)匹配及解包操作方法

    python星號(hào)(*)和雙星號(hào)(**)?函數(shù)動(dòng)態(tài)參數(shù)匹配及解包操作方法

    這篇文章主要介紹了python星號(hào)(*)和雙星號(hào)(**)?函數(shù)動(dòng)態(tài)參數(shù)匹配及解包操作,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • python爬蟲中的url下載器用法詳解

    python爬蟲中的url下載器用法詳解

    在本篇內(nèi)容里小編給各位整理的是一篇關(guān)于python爬蟲中的url下載器用法詳解內(nèi)容,需要的朋友們參考下。
    2020-11-11
  • Python基礎(chǔ)知識(shí)+結(jié)構(gòu)+數(shù)據(jù)類型

    Python基礎(chǔ)知識(shí)+結(jié)構(gòu)+數(shù)據(jù)類型

    這篇文章主要介紹了Python基礎(chǔ)知識(shí)+結(jié)構(gòu)+數(shù)據(jù)類型,文章基于python基礎(chǔ)知識(shí)圍繞主題展開(kāi)詳細(xì)內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-05-05
  • Python字符串替換實(shí)例分析

    Python字符串替換實(shí)例分析

    這篇文章主要介紹了Python字符串替換的方法,實(shí)例對(duì)比分析了單個(gè)字符替換與字符串替換的相關(guān)技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下
    2015-05-05
  • 利用PyInstaller將python程序.py轉(zhuǎn)為.exe的方法詳解

    利用PyInstaller將python程序.py轉(zhuǎn)為.exe的方法詳解

    這篇文章主要給大家介紹了利用PyInstaller將python程序.py轉(zhuǎn)為.exe的方法,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-05-05
  • python圣誕樹(shù)編寫實(shí)例詳解

    python圣誕樹(shù)編寫實(shí)例詳解

    在本篇文章里小編給大家整理的是關(guān)于python圣誕樹(shù)代碼的相關(guān)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2020-02-02
  • Python腳本去除文件的只讀性操作

    Python腳本去除文件的只讀性操作

    這篇文章主要介紹了Python腳本去除文件的只讀性操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-03-03
  • Selenium瀏覽器自動(dòng)化如何上傳文件

    Selenium瀏覽器自動(dòng)化如何上傳文件

    本文主要介紹了Selenium瀏覽器自動(dòng)化如何上傳文件,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • Python實(shí)現(xiàn)數(shù)據(jù)集劃分(訓(xùn)練集和測(cè)試集)

    Python實(shí)現(xiàn)數(shù)據(jù)集劃分(訓(xùn)練集和測(cè)試集)

    這篇文章主要為大家詳細(xì)介紹了Python是如何實(shí)現(xiàn)數(shù)據(jù)集劃分的,分為訓(xùn)練集和測(cè)試集,文中的實(shí)現(xiàn)方法講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-05-05

最新評(píng)論

宁陕县| 英吉沙县| 息烽县| 大邑县| 雷州市| 深泽县| 滨州市| 绥德县| 安溪县| 芜湖县| 敖汉旗| 霸州市| 湾仔区| 大竹县| 博白县| 纳雍县| 红安县| 中牟县| 滕州市| 阿拉善左旗| 星座| 西充县| 武宁县| 民丰县| 同仁县| 徐汇区| 旺苍县| 曲麻莱县| 大荔县| 额尔古纳市| 永昌县| 班戈县| 侯马市| 泰宁县| 灌阳县| 牟定县| 青海省| 玉龙| 根河市| 阿拉善右旗| 尼勒克县|