Skip to main content

a better ui autotest lib based on selenium, compatible with robot framework

Project description

img

中文 | English

seliky-史上最佳UI自动化测试库

seliky致力于做好UI自动化及爬虫中的与页面交互的逻辑,在原生selenium和drissionpage的基础上做了完美的封装,可以是helium等ui封装库的平替,它的主要特性如下:


  1. 极致简约稳定,学习简单🔥🔥🔥🔥🔥
    • 作者把大量复杂、冗余的操作进行了完美的封装,写代码时调用的语句非常简约干净。
    • 大量降低了学习成本,使用者无需了解selinium内在机制,甚至无需掌握python。
  2. 平滑替代🔥🔥🔥🔥🔥
    • 内部平滑代替:提供了基于selenium的seliky,和基于drissionpage的seliky_dri,api相同,相互之间可以无痛平滑代替。
    • 整库平滑代替:提供的公用api涵盖其它主流封装库的90%,方便公司将其它库平滑迁移至seliky。
    • 注:截止2025,我仍认为selinium和drissionpage是两个最佳的ui交互库,所以才有上述的封装。
  3. 交互稳定🔥🔥🔥🔥🔥
    • 原生selenium最大的弊病就是不稳定找不到元素,明明元素就在页面。seliky的交互机制通过最大耗时计算巧妙又精确的解决了元素就在页面但找不到的问题。
    • 多重机制保障稳定性。核心方法如 click-点击、send_keys-输入值都使用多套机制,所以才稳定好用。
  4. 统一采用xpath定位🔥🔥🔥
    • 不同的定位符的管理一直是业内通病,为方便管理,seliky统一采用xpath定位。
    • 这个大胆的设计源于吾先后在多家大厂调研得已验证,做ui自动化掌握好xpath这种万能定位足够了。
  5. 元素高亮🔥🔥🔥
    • 元素在交互时默认高亮闪烁,这一特效方便在执行时观察页面。
    • 在无界面时默认关闭。
  6. 无侵入式封装🔥🔥
    • 有很多优秀的封装库,把selinium的原生方法干没了,这是多大的自信。
    • seliky是在selinium的基础之上做的封装,丝毫不影响交互中使用原生方法,有利于熟悉了原生的用户无缝切换过来。
  7. 新版优势🔥
    • 有很多优秀的封装库是基于selenium3甚至selenium2来封装的,导致最新版的特性没体现出来。seliky基于selenium4来做的,具有新版新特性的优势。
    • 自动下载driver,seliky在早期(2022年)就已经支持自动下载driver,当时原生的是不支持的,可见吾敏锐的前瞻意识。后来selenium4支持了自动下载driver,吾也就进行了融合。
  8. GRID分布式化繁为简🔥🔥🔥🔥🔥
    • grid分布式搭建一直是复杂而琐碎的,而且有很多公司并不需要做ui自动化的兼容性,这一块很多自动化人员也不太重视。即便如此,吾还是进行了整合,只需要准备好jar包即可,通过remote_location参数实现了从机的控制。一大堆的配置变成了一个参数,实现了grid分布式化繁为简。
  9. 兼容robotframework框架🔥🔥
    • 还有公司使用RF框架的,可以使用seliky作为rf的平替。
  10. 自动化、爬虫通用🔥🔥🔥
    • 被反反爬的认证机制搞怕了??试试seliky的seliky_dri,无需driver,去掉了繁琐的对抗过程。
  11. 自动提取注释🔥🔥
    • 支持自动从xpath中提取关键词,来作为报告里的说明
  12. 简化xpath写法、精准计算timeout、click多重保障等强悍逻辑、一切为了稳定🔥🔥🔥🔥🔥
  13. 支持抓包,从此一边走ui一边走接口变得非常简单。🔥🔥🔥🔥🔥
  14. 支持托管已打开的浏览器。🔥🔥🔥

更多其它好用的特性,尽在seliky,使用 pip install seliky 来体验吧...


一个案例告诉你有多简单

案例:访问百度,依次搜索3组关键词,依次校验结果,结果正确的话随便打印些东西。

分析:你只需要记住几个关键的方法即可,请求-get、点击-click、输入-send_keys、是否可见-is_visible,代码示例如下:

from seliky.seliky_sel import WebDriver

# 实例化
page = WebDriver(executable_path=r'c:\chromedriver.exe')

# 打开浏览器
page.open_browser()

# 请求某度
page.get("https://www.baidu.com")

# 依次搜索关键词
search_words = ["小张", "小李", "小刘"]
for i in search_words:
    page.send_keys('//input[@id="kw"]', i)  # 输入值
    page.click('//input[@id="su"]')  # 点击搜索
    if page.is_visible('//img[@class="index-logo-src"]'):  # 判断是否出现logo
        print('百度logo已正确加载')

如果你是做爬虫的,或者想寻求无driver的方式来与页面交互,可以试试seliky_dri:

from seliky.seliky_dri import WebDriver


def ui():
    # 实例化无需传参,有谷歌浏览器即可
    page = WebDriver()

    # 打开浏览器
    page.open_browser()

    # 去某个网站
    page.get('https://sahitest.com/demo')

    # 点击某个按钮,复制按钮上面的文字来的
    page.click('Link Test', bac_sleep=3)

    # 同上
    page.get('https://sahitest.com/demo')
    page.click('Form Test', bac_sleep=3)
    page.get('https://sahitest.com/demo')
    page.click('Label Page', bac_sleep=3)


if __name__ == '__main__':
    ui()

固定浏览器版本(避免 Chrome 自动更新导致 driver 不匹配)🔥🔥🔥

做 UI 自动化最常见的坑:Chrome 后台自动升级,但 chromedriver 还停留在旧版本,于是报 session not created: This version of ChromeDriver only supports Chrome version xxx。有两种思路解决。

方案一(推荐):使用 Chrome for Testing,版本永久固定

Google 官方提供了专供自动化的固定版本浏览器 Chrome for Testing(永不自动更新),并配套对应版本的 chromedriver,二者天然匹配,一劳永逸。

  1. 打开下载页,挑一个版本,下载「chrome」和「chromedriver」两个包(注意操作系统要一致): https://googlechromelabs.github.io/chrome-for-testing/
  2. 解压后,把 driver 路径传给 seliky 即可:
from seliky.seliky_sel import WebDriver

# executable_path 指向 Chrome for Testing 配套的 chromedriver
page = WebDriver(executable_path=r'/your/path/chromedriver')
page.open_browser()

这样自动化环境的 Chrome 与 driver 版本被钉死,不再受系统 Chrome 升级影响,是最省心的做法。

方案二:禁用本机 Chrome 的自动更新

如果一定要用本机已装的 Chrome,可禁掉它的更新机制:

  • Windows(管理员命令行,写注册表策略):
    reg add "HKLM\SOFTWARE\Policies\Google\Update" /v UpdateDefault /t REG_DWORD /d 0 /f
    reg add "HKLM\SOFTWARE\Policies\Google\Update" /v AutoUpdateCheckPeriodMinutes /t REG_DWORD /d 0 /f
    
  • macOS(关闭 Keystone 自动检查,可逆):
    defaults write com.google.Keystone.Agent checkInterval 0
    

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

seliky-23.4.tar.gz (55.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

seliky-23.4-py3-none-any.whl (54.5 kB view details)

Uploaded Python 3

File details

Details for the file seliky-23.4.tar.gz.

File metadata

  • Download URL: seliky-23.4.tar.gz
  • Upload date:
  • Size: 55.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for seliky-23.4.tar.gz
Algorithm Hash digest
SHA256 b1351664a592f29818c8c21f11a67aadad5243e61db01f889f7af8acc9cbda72
MD5 1fe3d064373ea3f9bc80542ad74e3988
BLAKE2b-256 84097dbaa6cf97126ee5a5fe83e9681ae55970e7793dd1d09f9776c4bb502775

See more details on using hashes here.

File details

Details for the file seliky-23.4-py3-none-any.whl.

File metadata

  • Download URL: seliky-23.4-py3-none-any.whl
  • Upload date:
  • Size: 54.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for seliky-23.4-py3-none-any.whl
Algorithm Hash digest
SHA256 8fb8ae380797508adb770822229b4fa1d07479338283b1f7119e2a2e211b4785
MD5 d5f03c5412e83eeaeb8c70ba677d26f1
BLAKE2b-256 1edb3b183faecb216336235d92491203e5b69b57c8638789df453d2d5991a773

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page