コード例 #1
0
ファイル: element.py プロジェクト: BluesRem/Netter
 def action_native_tap(self):
     if self._driver.attr.type == 'Appium':
         Logger.debug('启动模拟真实点击')
         self._driver.update_settings({'nativeWebTap': True})
         with suppress(BaseException):
             yield
         Logger.debug('关闭模拟真实点击')
         self._driver.update_settings({'nativeWebTap': False})
     else:
         yield
コード例 #2
0
ファイル: webdriver.py プロジェクト: BluesRem/Netter
 def get(self, url, https=False):
     if '://' not in url:
         if https:
             protocol = 'https'
         else:
             protocol = 'http'
         url = f'{protocol}://{url}'
         Logger.debug(f'自动添加{protocol}协议')
     Logger.debug(f'加载链接:{url}')
     self._driver.get(url)
コード例 #3
0
ファイル: element.py プロジェクト: BluesRem/Netter
 def input(self, value, clear=True, stay=0.5):
     if not self.in_view:
         self.scroll_into_view(stay=stay)
     self.highlight()
     if clear:
         Logger.debug(f'清空输入框:{self._selector}')
         self._driver.execute_script('arguments[0].select();',
                                     self._element)
         self._element.send_keys(Keys.DELETE)
         time.sleep(0.5)
     Logger.debug(f'元素:{self._selector} 输入:{value}')
     self._element.send_keys(value)
コード例 #4
0
ファイル: element.py プロジェクト: BluesRem/Netter
 def click(self, native_tap=None, stay=0.5):
     if not self.in_view:
         self.scroll_into_view(stay=stay)
     self.highlight()
     Logger.debug(f'点击元素:{self._selector}')
     if self._driver.attr.type == 'Selenium':
         if self._driver.attr.name in ['IE', 'Safari']:
             self._driver.execute_script('arguments[0].click();',
                                         self._element)
             return
     elif self._driver.attr.type == 'Appium' and self._driver.attr.name == 'Safari':
         if native_tap:
             with self.action_native_tap():
                 self._element.click()
             return
     try:
         self._element.click()
     except ElementClickInterceptedException:
         self.scroll_into_view(stay=stay)
         self._element.click()
コード例 #5
0
ファイル: webdriver.py プロジェクト: BluesRem/Netter
 def url(self):
     url = self._driver.current_url
     Logger.debug(f'当前链接为:{url}')
     return url
コード例 #6
0
ファイル: webdriver.py プロジェクト: BluesRem/Netter
 def minimize(self):
     if self._driver.attr.type == 'Selenium':
         Logger.debug('窗口最小化')
         self._driver.minimize_window()
コード例 #7
0
ファイル: webdriver.py プロジェクト: BluesRem/Netter
 def title(self):
     title = self._driver.title
     Logger.debug(f'当前标题为:{title}')
     return title
コード例 #8
0
ファイル: element.py プロジェクト: BluesRem/Netter
 def text(self):
     text = self._element.text
     Logger.debug(f'元素:{self._selector} 的文本为:{text}')
     return text
コード例 #9
0
ファイル: base.py プロジェクト: BluesRem/Netter
 def __call__(self, *args, **kwargs):
     _value = self.outer_class._get_element(
         self._selector).get_attribute(name)
     Logger.debug(
         f'判断元素{self._selector}的属性{name}是否包含:{value},当前值为:{_value}')
     return self._value == _value
コード例 #10
0
ファイル: webdriver.py プロジェクト: BluesRem/Netter
 def get_img(self, filename=None):
     if filename is None:
         filename = f'{round(time.time())}.png'
     Logger.debug(f'截图并保存到:{filename}')
     self._driver.get_screenshot_as_file(filename=filename)
     return filename
コード例 #11
0
ファイル: element.py プロジェクト: BluesRem/Netter
 def select_by_value(self, value):
     if not self.in_view:
         self.scroll_into_view()
     self.highlight()
     Logger.debug(f'选择值为{value}的选项')
     Select(webelement=self._element).select_by_value(value=value)
コード例 #12
0
ファイル: webdriver.py プロジェクト: BluesRem/Netter
 def size(self):
     width, height = self._driver.get_window_size().values()
     Logger.debug(f'当前窗口大小为:{width} {height}')
     return {"width": width, "height": height}
コード例 #13
0
ファイル: webdriver.py プロジェクト: BluesRem/Netter
 def get_base64(self):
     Logger.debug('截图并保存为Base64格式')
     return self._driver.get_screenshot_as_base64()
コード例 #14
0
ファイル: webdriver.py プロジェクト: BluesRem/Netter
 def __call__(self, *args, **kwargs):
     Logger.debug(f'判断链接是否不等于:{url}')
     return self._url != self.outer_class.url
コード例 #15
0
ファイル: webdriver.py プロジェクト: BluesRem/Netter
 def __call__(self, *args, **kwargs):
     Logger.debug(f'判断链接是否满足正则规则:{pattern}')
     return re.search(self._pattern, self.outer_class.url)
コード例 #16
0
ファイル: webdriver.py プロジェクト: BluesRem/Netter
 def __call__(self, *args, **kwargs):
     Logger.debug('判断弹窗是否显示')
     with suppress(NoAlertPresentException):
         alert = self.outer_class._driver.switch_to.alert
         return alert
     return False
コード例 #17
0
ファイル: webdriver.py プロジェクト: BluesRem/Netter
 def __call__(self, *args, **kwargs):
     Logger.debug('判断是否有新窗口打开')
     return len(self._current_windows) != len(self.outer_class.windows)
コード例 #18
0
ファイル: webdriver.py プロジェクト: BluesRem/Netter
 def __call__(self, *args, **kwargs):
     Logger.debug('判断页面是否加载完毕')
     return self.outer_class.execute_script('return document.readyState;') == 'complete'
コード例 #19
0
ファイル: webdriver.py プロジェクト: BluesRem/Netter
 def page_timeout(self, wait_time):
     self._page_timeout = wait_time
     Logger.debug(f'设置页面加载超时时间:{wait_time}秒')
     self._driver.set_page_load_timeout(time_to_wait=wait_time)
コード例 #20
0
ファイル: webdriver.py プロジェクト: BluesRem/Netter
 def stop(self):
     Logger.debug('停止页面加载')
     self._driver.execute_script('window.stop();')
コード例 #21
0
ファイル: webdriver.py プロジェクト: BluesRem/Netter
 def back(self):
     with self.wait_for_page_load():
         Logger.debug('回返上一页')
         self._driver.back()
コード例 #22
0
ファイル: webdriver.py プロジェクト: BluesRem/Netter
 def close(self):
     Logger.debug('关闭标签页')
     self._driver.close()
コード例 #23
0
ファイル: element.py プロジェクト: BluesRem/Netter
 def select_by_index(self, index):
     if not self.in_view:
         self.scroll_into_view()
     self.highlight()
     Logger.debug(f'选择第{index}选项')
     Select(webelement=self._element).select_by_index(index=index)
コード例 #24
0
ファイル: webdriver.py プロジェクト: BluesRem/Netter
 def quit(self):
     Logger.debug('退出浏览器')
     self._driver.quit()
コード例 #25
0
ファイル: element.py プロジェクト: BluesRem/Netter
 def select_by_text(self, text):
     if not self.in_view:
         self.scroll_into_view()
     self.highlight()
     Logger.debug(f'选择文本为:{text}的选项')
     Select(webelement=self._element).select_by_visible_text(text=text)
コード例 #26
0
ファイル: webdriver.py プロジェクト: BluesRem/Netter
 def forward(self):
     with self.wait_for_page_load():
         Logger.debug('前往下一页')
         self._driver.forward()
コード例 #27
0
ファイル: element.py プロジェクト: BluesRem/Netter
 def attr(self, name):
     value = self._element.get_attribute(name=name)
     Logger.debug(f'元素:{self._selector} 的属性{name}值为:{value}')
     return value
コード例 #28
0
ファイル: webdriver.py プロジェクト: BluesRem/Netter
 def refresh(self):
     with self.wait_for_page_load():
         Logger.debug('刷新页面')
         self._driver.refresh()
コード例 #29
0
ファイル: base.py プロジェクト: BluesRem/Netter
 def __call__(self, *args, **kwargs):
     _text = self.outer_class._get_element(self._selector).text
     Logger.debug(
         f'判断元素{self._selector}的文本是否包含:{text},当前文本为:{_text}')
     return self._text == _text
コード例 #30
0
ファイル: webdriver.py プロジェクト: BluesRem/Netter
 def size(self, value: Tuple[float, float]):
     if self._driver.attr.type == 'Selenium':
         width, height = value
         Logger.debug(f'设置窗口大小为:{width} {height}')
         self._driver.set_window_size(width=width, height=height)