python如何实现PageFactory设计模式

  介绍

这篇文章主要讲解了python如何实现PageFactory设计模式,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。

<强>前言

PageFactory的设计模式能在java里执行的原因是java自带了PageFactory类,而在python中没有这样的包,但是已经有人写好了PageFactory在python的包,可以拿来用

PageFactory用于python支持的py文件

 __all__=[& # 39;缓存# 39;& # 39;callable_find_by& # 39;, & # 39; property_find_by& # 39;】
  def cacheable_decorator(查询):
  def func(自我):
  如果不是hasattr(自我,& # 39;_elements_cache& # 39;):
  自我。_elements_cache={} # {callable_id:元素(s)}
  缓存=self._elements_cache
  
  关键=id(查找)
  如果关键不在缓存:
  缓存(例子)=查找(自我)
  返回缓存(例子)
  回归函数
  缓存=cacheable_decorator
  
  _strategy_kwargs=[& # 39; id_& # 39; & # 39; xpath # 39;, & # 39; link_text& # 39;, & # 39; partial_link_text& # 39;,
  & # 39;名字# 39;& # 39;tag_name& # 39; & # 39; class_name& # 39;, & # 39; css_selector& # 39;
  
  def _callable_find_by(如何使用,多个缓存,上下文,driver_attr, * * kwargs):
  def func(自我):
  #上下文-司机或一个特定的元素
  如果上下文:
  ctx=上下文()调用(上下文)其他context.__get__(自我)#或财产
  其他:
  driver_attr ctx=getattr(自我)
  
  # & # 39;与# 39;和& # 39;使用# 39;优先于关键字参数
  如果和如何使用:
  查找=ctx。其他find_elements如果多个ctx.find_element
  返回查找(如何使用)
  
  如果len (kwargs) !=1或列表(kwargs.keys())[0]不是_strategy_kwargs:
  提高ValueError (
  “如果& # 39;与# 39;和& # 39;使用# 39;不指定,从pageobject_support进口callable_find_by>
  从硒进口webdriver
  从进口睡眠时间
  类BaiduSearchPage(对象):
  def __init__(自我,司机):
  自我。司机_driver=#初始化浏览器的api
  search_box=, (id_=発w")
  search_button=, (id_=& # 39;苏# 39;)
  def搜索(自我、关键词):
  .clear self.search_box () ()
  self.search_box () .send_keys(关键字)
  .click self.search_button () () 

支持的定位api

    <李> id_(为避免与内置的关键字ID冲突,所以多了个下划线的后缀) <李> <李> class_name名字李 <>李css_selector李 <>李tag_name李 <李> xpath李 <>李link_text李 <>李partial_link_text李

看完上述内容,是不是对python如何实现PageFactory设计模式有进一步的了解,如果还想学习更多内容,欢迎关注行业资讯频道。

python如何实现PageFactory设计模式