ctripcorp / flybirds Goto Github PK
View Code? Open in Web Editor NEW基于自然语言的,跨端跨框架 BDD UI 自动化测试方案,BDD testing, Python style, Present by Trip Flight
Home Page: https://ctripcorp.github.io/flybirds/
License: MIT License
基于自然语言的,跨端跨框架 BDD UI 自动化测试方案,BDD testing, Python style, Present by Trip Flight
Home Page: https://ctripcorp.github.io/flybirds/
License: MIT License
为了更好的解决你的问题, 建议在发表前, 先浏览以下内容。
Console
报错等方式提交更多的信息。Contributors
的回复进行反馈的,默认将认为已解决关闭 Issue合理的功能、建议,欢迎大家留言讨论
Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.
比如一个文件列表,怎么循环获取每个的下载链接,最后保存到本地?
增加web BDD UI Testing支持
问题描述 / Describe the bug
config/schema_url.json中已配置页面地址,跳转页面到[]报错,执行该语句报错
问题复现步骤 / To Reproduce
启动app
离开主页,进入到app其他页面
跳转页面到[指定schema-url]爆粗
预期结果 / Expected behavior
跳转到指定schema-url
截图 / Screenshots
环境信息 / Environment (please complete the following information):
Additional context
2022-02-18 13:38:39,021 - flybirds_log - INFO - <when "跳转页面到[qqq]">
2022-02-18 13:38:39,021 - flybirds_log - INFO - run step:跳转页面到[qqq]
2022-02-18 13:38:39,022 - flybirds_log - INFO - result_dic: {'pageName': 'qqq'}
2022-02-18 13:38:39,025 - flybirds_log - INFO - feature:失败重新运行1 scenario:验证点击--点击元素切换页面并输入 failed to run
2022-02-18 13:38:39,025 - flybirds_log - INFO - step:跳转页面到[qqq]
2022-02-18 13:38:39,025 - flybirds_log - ERROR - Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/behave/model.py", line 1329, in run
match.run(runner.context)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/behave/matchers.py", line 98, in run
self.func(context, *args, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/flybirds/core/dsl/step/page.py", line 15, in jump_to_page
g_Context.step.jump_to_page(context, param_1)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/flybirds/core/plugin/plugins/default/android/step.py", line 39, in jump_to_page
jump_to_page(context, param)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/flybirds/core/plugin/plugins/default/step/schema.py", line 23, in jump_to_page
snippet.schema_goto(
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/flybirds/utils/snippet.py", line 67, in schema_goto
schema_rule = getattr(schema_goto_module, "schema_deal_rule")
AttributeError: module 'app.operation' has no attribute 'schema_deal_rule'
问题描述 / Describe the bug
screenshot step succeed, but no image can be found. Also the time of screenshot in report shows 00:00:00.000
问题复现步骤 / To Reproduce
预期结果 / Expected behavior
image should be found
环境信息 / Environment (please complete the following information):
Additional context
如题,增加支持对异常弹窗进行处理:
下列配置时,仍然会触发rerun
"failRerun": false,
"maxFailRerunCount": 1,
"maxRetryCount": 1
建议web测试增加浏览器窗口大小控制及运行结束后是否关闭浏览器设置
Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.
问题描述 / Describe the bug
A clear and concise description of what the bug is.
问题复现步骤 / To Reproduce
截图 / Screenshots
If applicable, add screenshots to help explain your problem.
环境信息 / Environment (please complete the following information):
Additional context
Add any other context about the problem here.
请问adb devices这里能使用bluestack模拟器吗
我按照教程操作下来
(base) PS D:\Download\audio-visual\saas\data\indiehackerebooks> flybirds create
Welcome to flybirds cli. Please enter any information to continue.
Please input your project name>>: indie
Please input your test platform? (Android/IOS/Web): android
Do you want to configure your deviceId now?(this step can be skipped) [y/N]: y
Please input your deviceId?: emulator-5554
Do you want to configure your packageName now?(this step can be skipped) [y/N]: n
You can configure your packageName later in the project's flybirds_config.json file.
Cloning into 'indie'...
Processing [####################################] 100%
Done it! Create Project indie has success!
You can find it at: D:\Download\audio-visual\saas\data\indiehackerebooks\indie
(base) PS D:\Download\audio-visual\saas\data\indiehackerebooks> flybirds run -P features/test/android
2022-05-21 06:39:46,394 - flybirds_log - INFO - flybirds cmd info: features/test/android None --format=json report\b6a71e7f-e8a6-443e-8db8-764e94d29c0c\report.json () True None True local
Traceback (most recent call last):
File "D:\Program Files\anaconda3\lib\runpy.py", line 194, in _run_module_as_main
return _run_code(code, main_globals, None,
File "D:\Program Files\anaconda3\lib\runpy.py", line 87, in _run_code
exec(code, run_globals)
File "D:\Program Files\anaconda3\Scripts\flybirds.exe\__main__.py", line 7, in <module>
File "D:\Program Files\anaconda3\lib\site-packages\flybirds\launcher.py", line 13, in main
cli_main.app()
File "D:\Program Files\anaconda3\lib\site-packages\typer\main.py", line 214, in __call__
return get_command(self)(*args, **kwargs)
File "D:\Program Files\anaconda3\lib\site-packages\click\core.py", line 1128, in __call__
return self.main(*args, **kwargs)
File "D:\Program Files\anaconda3\lib\site-packages\click\core.py", line 1053, in main
rv = self.invoke(ctx)
File "D:\Program Files\anaconda3\lib\site-packages\click\core.py", line 1659, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "D:\Program Files\anaconda3\lib\site-packages\click\core.py", line 1395, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "D:\Program Files\anaconda3\lib\site-packages\click\core.py", line 754, in invoke
return __callback(*args, **kwargs)
File "D:\Program Files\anaconda3\lib\site-packages\typer\main.py", line 500, in wrapper
return callback(**use_params) # type: ignore
File "D:\Program Files\anaconda3\lib\site-packages\flybirds\cli\__main__.py", line 76, in runner
run_args = parse_args(
File "D:\Program Files\anaconda3\lib\site-packages\flybirds\cli\parse_args.py", line 47, in parse_args
check_workspace_args(feature_path)
File "D:\Program Files\anaconda3\lib\site-packages\flybirds\cli\parse_args.py", line 31, in check_workspace_args
raise Exception(f"not find config directory in {base_dir}")
Exception: not find config directory in D:\Download\audio-visual\saas\data\indiehackerebooks
(base) PS D:\Download\audio-visual\saas\data\indiehackerebooks> cd .\indie\
(base) PS D:\Download\audio-visual\saas\data\indiehackerebooks\indie> flybirds run -P features/test/android
2022-05-21 06:40:21,391 - flybirds_log - INFO - flybirds cmd info: features/test/android None --format=json report\2790eb80-d401-4ac7-bbd1-8c0e6a0765e2\report.json () True None True local
2022-05-21 06:40:21,391 - flybirds_log - INFO - report path: -o report\2790eb80-d401-4ac7-bbd1-8c0e6a0765e2\report.json
2022-05-21 06:40:21,392 - flybirds_log - INFO - screenshot path: report\2790eb80-d401-4ac7-bbd1-8c0e6a0765e2\screenshot
2022-05-21 06:40:21,392 - flybirds_log - INFO - the assembled behave execution command: behave features/test/android --format=json -o report\2790eb80-d401-4ac7-bbd1-8c0e6a0765e2\report.json --define screenShotDir=cmVwb3J0XDI3OTBlYjgwLWQ0MDEtNGFjNy1iYmQxLThjMGU2YTA3NjVlMlxzY3JlZW5zaG90 --define run_at=bG9jYWw= --no-color --no-capture --no-capture-stderr
2022-05-21 06:40:21,392 - flybirds_log - INFO - ============last run_args: {'cmd_str': 'behave features/test/android --format=json -o report\\2790eb80-d401-4ac7-bbd1-8c0e6a0765e2\\report.json --define screenShotDir=cmVwb3J0XDI3OTBlYjgwLWQ0MDEtNGFjNy1iYmQxLThjMGU2YTA3NjVlMlxzY3JlZW5zaG90 --define run_at=bG9jYWw= --no-color --no-capture --no-capture-stderr', 'need_rerun': True, 'report_dir_path': 'report\\2790eb80-d401-4ac7-bbd1-8c0e6a0765e2', 'use_define': ['--define', 'screenShotDir=cmVwb3J0XDI3OTBlYjgwLWQ0MDEtNGFjNy1iYmQxLThjMGU2YTA3NjVlMlxzY3JlZW5zaG90', '--define', 'run_at=bG9jYWw='], 'env_config': None, 'report_format': '--format=json', 'html': True, 'run_at': 'local', 'processes': 4, 'feature_path': 'features/test/android', 'parsed_tags': []}
2022-05-21 06:40:21,392 - flybirds_log - INFO - received run_args: {'cmd_str': 'behave features/test/android --format=json -o report\\2790eb80-d401-4ac7-bbd1-8c0e6a0765e2\\report.json --define screenShotDir=cmVwb3J0XDI3OTBlYjgwLWQ0MDEtNGFjNy1iYmQxLThjMGU2YTA3NjVlMlxzY3JlZW5zaG90 --define run_at=bG9jYWw= --no-color --no-capture --no-capture-stderr', 'need_rerun': True, 'report_dir_path': 'report\\2790eb80-d401-4ac7-bbd1-8c0e6a0765e2', 'use_define': ['--define', 'screenShotDir=cmVwb3J0XDI3OTBlYjgwLWQ0MDEtNGFjNy1iYmQxLThjMGU2YTA3NjVlMlxzY3JlZW5zaG90', '--define', 'run_at=bG9jYWw='], 'env_config': None, 'report_format': '--format=json', 'html': True, 'run_at': 'local', 'processes': 4, 'feature_path': 'features/test/android', 'parsed_tags': []}
2022-05-21 06:40:21,399 - flybirds_log - INFO - find extend pkg
2022-05-21 06:40:21,766 - flybirds_log - INFO - use_define: ['--define', 'screenShotDir=cmVwb3J0XDI3OTBlYjgwLWQ0MDEtNGFjNy1iYmQxLThjMGU2YTA3NjVlMlxzY3JlZW5zaG90', '--define', 'run_at=bG9jYWw=']
2022-05-21 06:40:24,090 - flybirds_log - INFO - change behave json format feature to flybirds feature
2022-05-21 06:40:24,091 - flybirds_log - INFO - change behave add_step_definition to flybirds add_step_definition
2022-05-21 06:40:24,127 - flybirds_log - INFO - [before_all_hook] user_data:{'screenShotDir': 'cmVwb3J0XDI3OTBlYjgwLWQ0MDEtNGFjNy1iYmQxLThjMGU2YTA3NjVlMlxzY3JlZW5zaG90', 'run_at': 'bG9jYWw='}
2022-05-21 06:40:24,127 - flybirds_log - INFO - [loader] user_data: {'screenShotDir': 'report\\2790eb80-d401-4ac7-bbd1-8c0e6a0765e2\\screenshot', 'run_at': 'local'}
2022-05-21 06:40:24,129 - flybirds_log - INFO - [loader] run platform: android
D:\Program Files\anaconda3\lib\site-packages\numpy\_distributor_init.py:30: UserWarning: loaded more than 1 DLL from .libs:
D:\Program Files\anaconda3\lib\site-packages\numpy\.libs\libopenblas.PYQHXLVVQ7VESDPUVUADXEVJOBGHJPAY.gfortran-win_amd64.dll
D:\Program Files\anaconda3\lib\site-packages\numpy\.libs\libopenblas.xwydx2ikjw2nmtwsfyngfuwkqu3lytcz.gfortran-win_amd64.dll
warnings.warn("loaded more than 1 DLL from .libs:"
HOOK-ERROR in before_all: ImportError: cannot import name '_registerMatType' from 'cv2.cv2' (D:\Program Files\anaconda3\lib\site-packages\cv2\cv2.cp38-win_amd64.pyd)
HOOK-ERROR in after_all: AttributeError: 'NoneType' object has no attribute 'device_info'
ABORTED: By user.
0 features passed, 0 failed, 0 skipped, 11 untested
0 scenarios passed, 0 failed, 0 skipped, 23 untested
0 steps passed, 0 failed, 0 skipped, 0 undefined, 117 untested
Took 0m0.000s
2022-05-21 06:40:24,390 - flybirds_log - INFO - Feature sum_count rerun after creation failure <= 0 or fail_count <= 0
2022-05-21 06:40:24,390 - flybirds_log - INFO - True
2022-05-21 06:40:24,396 - flybirds_log - INFO - Do you need to rerun the task: False, the failed retry task was not executed
2022-05-21 06:40:24,396 - flybirds_log - INFO - Start processing the json report. report_dir_path: [report\2790eb80-d401-4ac7-bbd1-8c0e6a0765e2],rerun_report_dir_path:[None]
2022-05-21 06:40:24,398 - flybirds_log - INFO - start generate report
2022-05-21 06:40:24,398 - flybirds_log - INFO - report cmd:node D:\Program Files\anaconda3\lib\site-packages\flybirds\report\node_report\report.js report\2790eb80-d401-4ac7-bbd1-8c0e6a0765e2 report\2790eb80-d401-4ac7-bbd1-8c0e6a0765e2 android
node:internal/modules/cjs/loader:936
throw err;
^
Error: Cannot find module 'D:\Program'
at Function.Module._resolveFilename (node:internal/modules/cjs/loader:933:15)
at Function.Module._load (node:internal/modules/cjs/loader:778:27)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12)
at node:internal/main/run_main_module:17:47 {
code: 'MODULE_NOT_FOUND',
(base) PS D:\Download\audio-visual\saas\data\indiehackerebooks\indie> adb devices
List of devices attached
emulator-5554 offline
Is your feature request related to a problem? Please describe.
场景: 答题功能, 答完一题, 出现下一题, 全部答完 显示成绩 页面
目前的功能似乎只能处理固定步骤的测试, 比如上面的场景, 如果题目的数量是不确定的, 没办法通过现有的功能判断出现 成绩页面 时结束测试.
Describe the solution you'd like
希望增加一个循环的功能, 比如: 当 成绩页面 出现时, 可以结束测试
Is your feature request related to a problem? Please describe.
元素定位支持xpath
Describe the solution you'd like
A clear and concise description of what you want to happen.
目前web定位似乎用的page.query_selector, playwright支持page.locator同时兼容多种定位方式
Describe the solution you'd like
Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.
Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.
如果我想给flybirds-web端添加类似的效果,也就是把每一步交互的操作增加一个类似hint的东西,对应到
功能: web点击
场景: 点击元素
假如 跳转页面到[百度]
标注 在[#kw]中画框 在[#kw]下弹出提示[请输入你想要查询的关键词]
而且 在[#kw]中输入[flybirds]
而且 等待[3]秒
那么 全屏截图
有什么思路吗
Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.
目前的实现里我没太看懂是怎么实现的,但有一个bug
如果是unbutu系统中没有中文字符,会显示小方块,同理cjk系列的语言应该都是这样
需要文档里注明提前安装对应字体
参考录屏中的字体显示
https://www.zhihu.com/question/19911793
sudo apt-get install ttf-wqy-microhei #文泉驿-微米黑
sudo apt-get install ttf-wqy-zenhei #文泉驿-正黑
sudo apt-get install xfonts-wqy #文泉驿-点阵宋体
Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.
这个能升级吗
Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.
我目前使用pl的话 默认的录屏 record-video-dir 存在两个问题
1.没法控制起始时间,比如真正打开网页的时候,默认会把加载的空白也录制进来,网络不好就会很长
2.清晰度很受限
其中的track方法能很好的解决上面两个问题,有机会我可以pr一下
Context
错误日志
2022-01-11 10:46:26,985 - flybirds_log - INFO - find extend pkg
Exception AttributeError: 'DeviceConfig' object has no attribute 'platform'
Traceback (most recent call last):
File "/usr/local/bin/behave", line 11, in
load_entry_point('behave==1.2.6', 'console_scripts', 'behave')()
File "/usr/local/lib/python3.7/site-packages/behave/main.py", line 183, in main
return run_behave(config)
优化点
问题描述 / Describe the bug
install fail on macOS, cause flybirds depend on a lower version tidevice 0.5.9
问题复现步骤 / To Reproduce
Collecting flybirds
Downloading flybirds-0.1.6-py3-none-any.whl (2.9 MB)
|████████████████████████████████| 2.9 MB 2.6 MB/s
Downloading flybirds-0.1.5-py3-none-any.whl (2.9 MB)
|████████████████████████████████| 2.9 MB 2.7 MB/s
Downloading flybirds-0.1.4-py3-none-any.whl (2.9 MB)
|████████████████████████████████| 2.9 MB 2.6 MB/s
Downloading flybirds-0.1.3-py3-none-any.whl (2.9 MB)
|████████████████████████████████| 2.9 MB 2.7 MB/s
Downloading flybirds-0.1.2-py3-none-any.whl (2.9 MB)
|████████████████████████████████| 2.9 MB 2.6 MB/s
Downloading flybirds-0.1.1-py3-none-any.whl (2.9 MB)
|████████████████████████████████| 2.9 MB 2.7 MB/s
ERROR: Cannot install flybirds==0.1.1, flybirds==0.1.2, flybirds==0.1.3, flybirds==0.1.4, flybirds==0.1.5 and flybirds==0.1.6 because these package versions have conflicting dependencies.
The conflict is caused by:
flybirds 0.1.6 depends on tidevice==0.5.9
flybirds 0.1.5 depends on tidevice==0.5.9
flybirds 0.1.4 depends on tidevice==0.5.9
flybirds 0.1.3 depends on tidevice==0.5.9
flybirds 0.1.2 depends on tidevice==0.5.9
flybirds 0.1.1 depends on tidevice==0.5.9
To fix this you could try to:
1. loosen the range of package versions you've specified
2. remove package versions to allow pip attempt to solve the dependency conflict
ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/user_guide/#fixing-conflicting-dependencies
WARNING: You are using pip version 21.2.4; however, version 22.0.4 is available.
You should consider upgrading via the '/Users/wetest/.pyenv/versions/3.9.10/bin/python3.9 -m pip install --upgrade pip' command.
FAIL: 1
预期结果 / Expected behavior
should support with the newest tidevice
截图 / Screenshots
环境信息 / Environment (please complete the following information):
问题描述 / Describe the bug
A clear and concise description of what the bug is.
问题复现步骤 / To Reproduce
1.(venv) PS E:\chase_code\AutoTest_PC\gsol_-pc_-auto-test> flybirds run -D platform=web -P features/test/web
2022-06-09 14:58:46,534 - flybirds_log - INFO - report cmd:node E:\chase_code\AutoTest_PC\gsol_-pc_-auto-test\venv\lib\site-packages\flybirds\report\node_report\report.js report\18767f45-9780-4f4d-98bc-decdfca54c95 report\18767f45-9
780-4f4d-98bc-decdfca54c95 web
multiple-cucumber-html-reporter platform: web
lodash.templateSources[1]:10
_.each(suite.features[0].metadata, function(metadatum, metadatumIndex) { ;
^
TypeError: Cannot read property 'metadata' of undefined
at eval (lodash.templateSources[1]:10:27)
at createFeaturesOverviewIndexPage (E:\chase_code\AutoTest_PC\gsol-pc_-auto-test\venv\lib\site-packages\flybirds\report\node_report\node_modules\multiple-cucumber-html-reporter\lib\generate-report.js:455:84)
at Object.generateReport [as generate] (E:\chase_code\AutoTest_PC\gsol_-pc_-auto-test\venv\lib\site-packages\flybirds\report\node_report\node_modules\multiple-cucumber-html-reporter\lib\generate-report.js:139:3)
at Object. (E:\chase_code\AutoTest_PC\gsol_-pc_-auto-test\venv\lib\site-packages\flybirds\report\node_report\report.js:46:8)
at Module._compile (internal/modules/cjs/loader.js:1068:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1097:10)
at Module.load (internal/modules/cjs/loader.js:933:32)
at Function.Module._load (internal/modules/cjs/loader.js:774:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
at internal/main/run_main_module.js:17:47
预期结果 / Expected behavior
A clear and concise description of what you expected to happen.
截图 / Screenshots
If applicable, add screenshots to help explain your problem.
环境信息 / Environment (please complete the following information):
Additional context
Add any other context about the problem here.
Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.
进一步降低非开发人员的上手成本
在web端可以实现一次录制 多次调用
https://github.com/DeploySentinel/Recorder
https://github.com/checkly/headless-recorder
问题是移动端怎么做?抛开css selector xpath定位的 纯视觉的定位应该可以直接用?
希望得到帮助,通过提供的例子能获取到flutterApp界面元素吗?
问题描述 / Describe the bug
A clear and concise description of what the bug is.
问题复现步骤 / To Reproduce
预期结果 / Expected behavior
A clear and concise description of what you expected to happen.
截图 / Screenshots
If applicable, add screenshots to help explain your problem.
环境信息 / Environment (please complete the following information):
Additional context
Add any other context about the problem here.
我先执行了
$ flybirds run -P features/test/android
由于我模拟器没配置好,提示有问题, 我想直接试下web好了
先playwright install了各种浏览器
$ flybirds run -P features/test/web
2022-05-22 00:10:00,501 - flybirds_log - INFO - flybirds cmd info: features/test/web None --format=json report\24663315-63d7-40da-b16a-c309866701d0\report.json () True None True local
2022-05-22 00:10:00,502 - flybirds_log - INFO - report path: -o report\24663315-63d7-40da-b16a-c309866701d0\report.json
2022-05-22 00:10:00,504 - flybirds_log - INFO - screenshot path: report\24663315-63d7-40da-b16a-c309866701d0\screenshot
2022-05-22 00:10:00,504 - flybirds_log - INFO - the assembled behave execution command: behave features/test/web --format=json -o report\24663315-63d7-40da-b16a-c309866701d0\report.json --define screenShotDir=cmVwb3J0XDI0NjYzMzE1LTYzZDctNDBkYS1iMTZhLWMzMDk4NjY3MDFkMFxzY3JlZW5zaG90 --define run_at=bG9jYWw= --no-color --no-capture --no-capture-stderr
2022-05-22 00:10:00,504 - flybirds_log - INFO - ============last run_args: {'cmd_str': 'behave features/test/web --format=json -o report\\24663315-63d7-40da-b16a-c309866701d0\\report.json --define screenShotDir=cmVwb3J0XDI0NjYzMzE1LTYzZDctNDBkYS1iMTZhLWMzMDk4NjY3MDFkMFxzY3JlZW5zaG90 --define run_at=bG9jYWw= --no-color --no-capture --no-capture-stderr', 'need_rerun': True, 'report_dir_path': 'report\\24663315-63d7-40da-b16a-c309866701d0', 'use_define': ['--define', 'screenShotDir=cmVwb3J0XDI0NjYzMzE1LTYzZDctNDBkYS1iMTZhLWMzMDk4NjY3MDFkMFxzY3JlZW5zaG90', '--define', 'run_at=bG9jYWw='], 'env_config': None, 'report_format': '--format=json', 'html': True, 'run_at': 'local', 'processes': 4, 'feature_path': 'features/test/web', 'parsed_tags': []}
2022-05-22 00:10:00,505 - flybirds_log - INFO - received run_args: {'cmd_str': 'behave features/test/web --format=json -o report\\24663315-63d7-40da-b16a-c309866701d0\\report.json --define screenShotDir=cmVwb3J0XDI0NjYzMzE1LTYzZDctNDBkYS1iMTZhLWMzMDk4NjY3MDFkMFxzY3JlZW5zaG90 --define run_at=bG9jYWw= --no-color --no-capture --no-capture-stderr', 'need_rerun': True, 'report_dir_path': 'report\\24663315-63d7-40da-b16a-c309866701d0', 'use_define': ['--define', 'screenShotDir=cmVwb3J0XDI0NjYzMzE1LTYzZDctNDBkYS1iMTZhLWMzMDk4NjY3MDFkMFxzY3JlZW5zaG90', '--define', 'run_at=bG9jYWw='], 'env_config': None, 'report_format': '--format=json', 'html': True, 'run_at': 'local', 'processes': 4, 'feature_path': 'features/test/web', 'parsed_tags': []}
2022-05-22 00:10:00,514 - flybirds_log - INFO - find extend pkg
2022-05-22 00:10:00,549 - flybirds_log - INFO - use_define: ['--define', 'screenShotDir=cmVwb3J0XDI0NjYzMzE1LTYzZDctNDBkYS1iMTZhLWMzMDk4NjY3MDFkMFxzY3JlZW5zaG90', '--define', 'run_at=bG9jYWw=']
2022-05-22 00:10:00,931 - flybirds_log - INFO - change behave json format feature to flybirds feature
2022-05-22 00:10:00,932 - flybirds_log - INFO - change behave add_step_definition to flybirds add_step_definition
2022-05-22 00:10:00,979 - flybirds_log - INFO - [before_all_hook] user_data:{'screenShotDir': 'cmVwb3J0XDI0NjYzMzE1LTYzZDctNDBkYS1iMTZhLWMzMDk4NjY3MDFkMFxzY3JlZW5zaG90', 'run_at': 'bG9jYWw='}
2022-05-22 00:10:00,980 - flybirds_log - INFO - [loader] user_data: {'screenShotDir': 'report\\24663315-63d7-40da-b16a-c309866701d0\\screenshot', 'run_at': 'local'}
2022-05-22 00:10:00,981 - flybirds_log - INFO - [loader] run platform: android
2022-05-22 00:10:01,336 - flybirds_log - INFO - start on before hook
2022-05-22 00:10:01,337 - flybirds_log - INFO - [event config] user_data: {'screenShotDir': 'report\\24663315-63d7-40da-b16a-c309866701d0\\screenshot', 'run_at': 'local'}
2022-05-22 00:10:01,337 - flybirds_log - INFO - user data,count:2
2022-05-22 00:10:01,338 - flybirds_log - INFO - run_config
2022-05-22 00:10:01,338 - flybirds_log - INFO - {'is_rerun': False, 'run_at': 'local'}
2022-05-22 00:10:01,339 - flybirds_log - INFO - Logging configuration information
2022-05-22 00:10:01,339 - flybirds_log - INFO - {'level': 'info'}
2022-05-22 00:10:01,340 - flybirds_log - INFO - APP configuration information
2022-05-22 00:10:01,340 - flybirds_log - INFO - {'package_name': 'ctrip.android.view', 'unique_tag': '', 'default_user': None, 'default_password': None, 'user_group': 1, 'package_path': 'https://download2.ctrip.com/html5/Ctrip_V8.43.0_SIT4-100053_Product_9725895.apk', 'overwrite_installation': False, 'run_id': None, 'build_id': None, 'pkg_version': None}
2022-05-22 00:10:01,341 - flybirds_log - INFO - Device configuration information
2022-05-22 00:10:01,341 - flybirds_log - INFO - {'device_id': '127.0.0.1:62001', 'platform': 'android', 'web_driver_agent': 'com.fd.test.WebDriverAgentLib.xctrunner', 'screen_size': None}
2022-05-22 00:10:01,342 - flybirds_log - INFO - Web configuration information
2022-05-22 00:10:01,343 - flybirds_log - INFO - {'headless': False, 'browser_type': ['chromium'], 'default_time_out': 30}
2022-05-22 00:10:01,343 - flybirds_log - INFO - Frame parameter configuration information
2022-05-22 00:10:01,344 - flybirds_log - INFO - {'wait_ele_timeout': 35, 'wait_ele_disappear': 10, 'click_verify_timeout': 15, 'use_swipe_duration': False, 'swipe_duration': 6, 'use_poco_input': True, 'after_input_wait': 1, 'use_search_swipe_duration': False, 'search_swipe_duration': 1, 'swipe_search_count': 5, 'swipe_search_distance': 0.3, 'page_render_timeout': 65, 'app_start_time': 6, 'swipe_ready_time': 3, 'verify_pos_not_change_count': 5, 'screen_record_time': 90, 'use_snap': True, 'use_airtest_record': False}
2022-05-22 00:10:01,345 - flybirds_log - INFO - Test report configuration information
2022-05-22 00:10:01,345 - flybirds_log - INFO - {'screen_shot_dir': 'report\\24663315-63d7-40da-b16a-c309866701d0\\screenshot'}
2022-05-22 00:10:01,345 - flybirds_log - INFO - Process control configuration information
2022-05-22 00:10:01,345 - flybirds_log - INFO - {'before_run_page': 'restartApp', 'scenario_fail_page': 'restartApp', 'scenario_success_page': 'None', 'before_run_login': False, 'fail_screen_record': True, 'scenario_screen_record_time': 120, 'fail_rerun': False, 'max_fail_rerun_count': 1.0, 'max_retry_count': 1}
2022-05-22 00:10:01,347 - flybirds_log - INFO - configuration file read completed
2022-05-22 00:10:01,348 - flybirds_log - INFO - Logging configuration information
2022-05-22 00:10:01,348 - flybirds_log - INFO - {'level': 'info'}
2022-05-22 00:10:01,353 - flybirds_log - INFO - the python script in the project is read
2022-05-22 00:10:01,353 - flybirds_log - INFO - [active_before_all] user_data:{'screenShotDir': 'report\\24663315-63d7-40da-b16a-c309866701d0\\screenshot', 'run_at': 'local'}
2022-05-22 00:10:01,353 - flybirds_log - INFO - default_active_tag_provider :android chromium
2022-05-22 00:10:01,354 - flybirds_log - INFO - [active_before_all] active_tag_provider:{'python2': 'false', 'python3': 'true', 'os': 'win32', 'platform': 'android', 'deviceType': 'ivd', 'cur_browser': 'chromium'}
2022-05-22 00:10:01,354 - flybirds_log - INFO - device prepare
2022-05-22 00:10:01,354 - flybirds_log - INFO - device_id information:127.0.0.1:62001
[00:10:01][DEBUG]<airtest.core.android.adb> D:\Programs\anaconda\envs\dev\Lib\site-packages\airtest\core\android\static\adb\windows\adb.exe -s 127.0.0.1:62001 get-state
[00:10:01][DEBUG]<airtest.core.android.adb> D:\Programs\anaconda\envs\dev\Lib\site-packages\airtest\core\android\static\adb\windows\adb.exe -s 127.0.0.1:62001 wait-for-device
[00:10:01][DEBUG]<airtest.core.android.adb> D:\Programs\anaconda\envs\dev\Lib\site-packages\airtest\core\android\static\adb\windows\adb.exe -s 127.0.0.1:62001 shell getprop ro.build.version.sdk
2022-05-22 00:10:01,500 - flybirds_log - INFO - device connect info:<airtest.core.android.android.Android object at 0x0000024BA01731F0>
2022-05-22 00:10:01,501 - flybirds_log - INFO - initialize the device complete:127.0.0.1:62001
[00:10:01][DEBUG]<airtest.core.android.adb> D:\Programs\anaconda\envs\dev\Lib\site-packages\airtest\core\android\static\adb\windows\adb.exe -s 127.0.0.1:62001 shell pm list packages
2022-05-22 00:10:02,016 - flybirds_log - INFO - install app start, path:D:\Download\audio-visual\saas\data\indiehackerebooks\indie\download\installer.apk
[00:10:02][DEBUG]<airtest.core.android.adb> D:\Programs\anaconda\envs\dev\Lib\site-packages\airtest\core\android\static\adb\windows\adb.exe -s 127.0.0.1:62001 install D:\Download\audio-visual\saas\data\indiehackerebooks\indie\download\installer.apk
2022-05-22 00:10:09,021 - flybirds_log - INFO - fail to install app
HOOK-ERROR in before_all: Exception: Traceback (most recent call last):
File "D:\Programs\anaconda\envs\dev\lib\site-packages\flybirds\core\plugin/event\app_prepare.py", line 102, in run
app.install_app(installer)
File "D:\Programs\anaconda\envs\dev\lib\site-packages\flybirds\core\driver\app.py", line 43, in install_app
return g_context.app.install_app(package_path, wait_time)
File "D:\Programs\anaconda\envs\dev\lib\site-packages\flybirds\core\plugin\plugins/default/android\app.py", line 40, in install_app
i_result = install(package_path)
File "D:\Programs\anaconda\envs\dev\lib\site-packages\airtest\utils\logwraper.py", line 90, in wrapper
res = f(*args, **kwargs)
File "D:\Programs\anaconda\envs\dev\lib\site-packages\airtest\core\api.py", line 229, in install
return G.DEVICE.install_app(filepath, **kwargs)
File "D:\Programs\anaconda\envs\dev\lib\site-packages\airtest\core\android\android.py", line 363, in install_app
return self.adb.install_app(filepath, replace=replace, install_options=install_options)
File "D:\Programs\anaconda\envs\dev\lib\site-packages\airtest\core\android\adb.py", line 584, in install_app
out = self.cmd(cmds)
File "D:\Programs\anaconda\envs\dev\lib\site-packages\airtest\core\android\adb.py", line 197, in cmd
raise AdbError(stdout, stderr)
airtest.core.error.AdbError: stdout[] stderr[adb: failed to install D:\Download\audio-visual\saas\data\indiehackerebooks\indie\download\installer.apk: Failure [INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113]
]
ABORTED: By user.
0 features passed, 0 failed, 0 skipped, 16 untested
0 scenarios passed, 0 failed, 0 skipped, 30 untested
0 steps passed, 0 failed, 0 skipped, 0 undefined, 132 untested
Took 0m0.000s
2022-05-22 00:10:09,104 - flybirds_log - INFO - Feature sum_count rerun after creation failure <= 0 or fail_count <= 0
2022-05-22 00:10:09,104 - flybirds_log - INFO - True
2022-05-22 00:10:09,110 - flybirds_log - INFO - Do you need to rerun the task: False, the failed retry task was not executed
2022-05-22 00:10:09,110 - flybirds_log - INFO - Start processing the json report. report_dir_path: [report\24663315-63d7-40da-b16a-c309866701d0],rerun_report_dir_path:[None]
2022-05-22 00:10:09,112 - flybirds_log - INFO - start generate report
2022-05-22 00:10:09,112 - flybirds_log - INFO - report cmd:node D:\Programs\anaconda\envs\dev\lib\site-packages\flybirds\report\node_report\report.js report\24663315-63d7-40da-b16a-c309866701d0 report\24663315-63d7-40da-b16a-c309866701d0 android
multiple-cucumber-html-reporter platform: android
对于无法通过poco识别的页面元素,增加OCR识别方法
1.支持将数据存入全局缓存。
2. 支持step里面通过自定义key 动态获取 缓存数据
问题描述 / Describe the bug
flybirds_config.json中的“waitEleTimeout”和步骤中指定的timeout都没有生效
问题复现步骤 / To Reproduce
<html>
<body>
Test Timeout
</body>
<script>
setTimeout(function(){
var button = document.createElement("button");
button.setAttribute("id", "delay_btn");
button.innerHTML = "Submit";
document.body.appendChild(button);
}, 1000);
</script>
</html>
# language: zh-CN
功能: web点击
场景: 点击元素
假如 跳转页面到[http://127.0.0.1:5500/show.html]
而且 点击[#delay_btn, timeout=10]
那么 全屏截图
2022-05-19 12:48:20,999 - flybirds_log - INFO - [scenario_OnAfter] start!
2022-05-19 12:48:21,000 - flybirds_log - INFO - [scenario_fail] feature:web点击, scenario:点击元素 failed to run
2022-05-19 12:48:21,001 - flybirds_log - INFO - [scenario_fail] step:点击[#delay_btn, timeout=10]
2022-05-19 12:48:21,001 - flybirds_log - ERROR - [scenario_fail] step error msg:Traceback (most recent call last):
File "/home/xxxxxx/VSProjects/xxxxxx/venv/lib/python3.7/site-packages/behave/model.py", line 1329, in run
match.run(runner.context)
File "/home/xxxxxx/VSProjects/xxxxxx/venv/lib/python3.7/site-packages/behave/matchers.py", line 98, in run
self.func(context, *args, **kwargs)
File "/home/xxxxxx/VSProjects/xxxxxx/venv/lib/python3.7/site-packages/flybirds/utils/dsl_helper.py", line 171, in wrapper_func
func(*args, **kwargs)
File "/home/xxxxxx/VSProjects/xxxxxx/venv/lib/python3.7/site-packages/flybirds/core/dsl/step/element.py", line 49, in click_ele
g_Context.step.click_ele(context, selector)
File "/home/xxxxxx/VSProjects/xxxxxx/venv/lib/python3.7/site-packages/flybirds/core/plugin/plugins/default/web/step.py", line 71, in click_ele
ele.ele_click(context, selector)
File "/home/xxxxxx/VSProjects/xxxxxx/venv/lib/python3.7/site-packages/flybirds/core/plugin/plugins/default/web/element.py", line 103, in ele_click
locator = self.get_ele_locator(param)
File "/home/xxxxxx/VSProjects/xxxxxx/venv/lib/python3.7/site-packages/flybirds/core/plugin/plugins/default/web/element.py", line 68, in get_ele_locator
selector_node, selector_str = self.get_ele_handle(selector)
File "/home/xxxxxx/VSProjects/xxxxxx/venv/lib/python3.7/site-packages/flybirds/core/plugin/plugins/default/web/element.py", line 89, in get_ele_handle
raise FlybirdsVerifyEleException(selector=selector_str)
flybirds.core.exceptions.FlybirdsVerifyEleException: Timeout 35000ms exceeded.
==================== logs ====================
waiting for selector "text=#delay_btn"
==============================================
预期结果 / Expected behavior
超时时间和文档中的描述一致
环境信息 / Environment (please complete the following information):
系统版本: masOS big Sur 11.6
python版本 : 3.8.9
pip3 install flybirds 之后 , flybirds 我无法正常启动它.
问题描述 / Describe the bug
A clear and concise description of what the bug is.
问题复现步骤 / To Reproduce
C:\Python39\lib\site-packages\behave\runner.py:585: RuntimeWarning: coroutine 'Browser.close' was never awaited
statement.error_message = error_message
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
预期结果 / Expected behavior
A clear and concise description of what you expected to happen.
截图 / Screenshots
If applicable, add screenshots to help explain your problem.
环境信息 / Environment (please complete the following information):
Additional context
Add any other context about the problem here.
Installing build dependencies ... error
error: subprocess-exited-with-error
× pip subprocess to install build dependencies did not run successfully.
│ exit code: 1
╰─> [1102 lines of output]
Ignoring numpy: markers 'python_version == "3.6"' don't match your environment
Ignoring numpy: markers 'python_version == "3.7"' don't match your environment
Ignoring numpy: markers 'python_version == "3.8"' don't match your environment
Collecting setuptools
Using cached setuptools-63.2.0-py3-none-any.whl (1.2 MB)
Collecting wheel
Using cached wheel-0.37.1-py2.py3-none-any.whl (35 kB)
Collecting scikit-build
Using cached scikit_build-0.15.0-py2.py3-none-any.whl (77 kB)
Collecting cmake
Using cached cmake-3.22.5-py2.py3-none-macosx_10_10_universal2.macosx_10_10_x86_64.macosx_11_0_arm64.macosx_11_0_universal2.whl (75.2 MB)
Collecting pip
Using cached pip-22.1.2-py3-none-any.whl (2.1 MB)
Collecting numpy==1.19.3
Using cached numpy-1.19.3.zip (7.3 MB)
Installing build dependencies: started
Installing build dependencies: still running...
Installing build dependencies: finished with status 'done'
Getting requirements to build wheel: started
Getting requirements to build wheel: finished with status 'done'
Preparing metadata (pyproject.toml): started
Preparing metadata (pyproject.toml): finished with status 'done'
Collecting packaging
Using cached packaging-21.3-py3-none-any.whl (40 kB)
Collecting distro
Using cached distro-1.7.0-py3-none-any.whl (20 kB)
Collecting pyparsing!=3.0.5,>=2.0.2
Using cached pyparsing-3.0.9-py3-none-any.whl (98 kB)
Building wheels for collected packages: numpy
Building wheel for numpy (pyproject.toml): started
Building wheel for numpy (pyproject.toml): finished with status 'error'
error: subprocess-exited-with-error
× Building wheel for numpy (pyproject.toml) did not run successfully.
│ exit code: 1
╰─> [1058 lines of output]
Running from numpy source directory.
numpy/random/_bounded_integers.pxd.in has not changed
numpy/random/_philox.pyx has not changed
numpy/random/_bounded_integers.pyx.in has not changed
numpy/random/_sfc64.pyx has not changed
numpy/random/_mt19937.pyx has not changed
numpy/random/bit_generator.pyx has not changed
Processing numpy/random/_bounded_integers.pyx
numpy/random/mtrand.pyx has not changed
numpy/random/_generator.pyx has not changed
numpy/random/_pcg64.pyx has not changed
numpy/random/_common.pyx has not changed
Cythonizing sources
blas_opt_info:
blas_mkl_info:
customize UnixCCompiler
libraries mkl_rt not found in ['/Library/Frameworks/Python.framework/Versions/3.9/lib', '/usr/local/lib', '/usr/lib']
NOT AVAILABLE
blis_info:
libraries blis not found in ['/Library/Frameworks/Python.framework/Versions/3.9/lib', '/usr/local/lib', '/usr/lib']
NOT AVAILABLE
openblas_info:
libraries openblas not found in ['/Library/Frameworks/Python.framework/Versions/3.9/lib', '/usr/local/lib', '/usr/lib']
NOT AVAILABLE
atlas_3_10_blas_threads_info:
Setting PTATLAS=ATLAS
libraries tatlas not found in ['/Library/Frameworks/Python.framework/Versions/3.9/lib', '/usr/local/lib', '/usr/lib']
NOT AVAILABLE
atlas_3_10_blas_info:
libraries satlas not found in ['/Library/Frameworks/Python.framework/Versions/3.9/lib', '/usr/local/lib', '/usr/lib']
NOT AVAILABLE
atlas_blas_threads_info:
Setting PTATLAS=ATLAS
libraries ptf77blas,ptcblas,atlas not found in ['/Library/Frameworks/Python.framework/Versions/3.9/lib', '/usr/local/lib', '/usr/lib']
NOT AVAILABLE
atlas_blas_info:
libraries f77blas,cblas,atlas not found in ['/Library/Frameworks/Python.framework/Versions/3.9/lib', '/usr/local/lib', '/usr/lib']
NOT AVAILABLE
accelerate_info:
libraries accelerate not found in ['/Library/Frameworks/Python.framework/Versions/3.9/lib', '/usr/local/lib', '/usr/lib']
Library accelerate was not found. Ignoring
libraries veclib not found in ['/Library/Frameworks/Python.framework/Versions/3.9/lib', '/usr/local/lib', '/usr/lib']
Library veclib was not found. Ignoring
FOUND:
extra_compile_args = ['-faltivec', '-I/System/Library/Frameworks/vecLib.framework/Headers']
extra_link_args = ['-Wl,-framework', '-Wl,Accelerate']
define_macros = [('NO_ATLAS_INFO', 3), ('HAVE_CBLAS', None)]
FOUND:
extra_compile_args = ['-faltivec', '-I/System/Library/Frameworks/vecLib.framework/Headers']
extra_link_args = ['-Wl,-framework', '-Wl,Accelerate']
define_macros = [('NO_ATLAS_INFO', 3), ('HAVE_CBLAS', None)]
non-existing path in 'numpy/distutils': 'site.cfg'
lapack_opt_info:
lapack_mkl_info:
libraries mkl_rt not found in ['/Library/Frameworks/Python.framework/Versions/3.9/lib', '/usr/local/lib', '/usr/lib']
NOT AVAILABLE
openblas_lapack_info:
libraries openblas not found in ['/Library/Frameworks/Python.framework/Versions/3.9/lib', '/usr/local/lib', '/usr/lib']
NOT AVAILABLE
openblas_clapack_info:
libraries openblas,lapack not found in ['/Library/Frameworks/Python.framework/Versions/3.9/lib', '/usr/local/lib', '/usr/lib']
NOT AVAILABLE
flame_info:
libraries flame not found in ['/Library/Frameworks/Python.framework/Versions/3.9/lib', '/usr/local/lib', '/usr/lib']
NOT AVAILABLE
atlas_3_10_threads_info:
Setting PTATLAS=ATLAS
libraries lapack_atlas not found in /Library/Frameworks/Python.framework/Versions/3.9/lib
libraries tatlas,tatlas not found in /Library/Frameworks/Python.framework/Versions/3.9/lib
libraries lapack_atlas not found in /usr/local/lib
libraries tatlas,tatlas not found in /usr/local/lib
libraries lapack_atlas not found in /usr/lib
libraries tatlas,tatlas not found in /usr/lib
<class 'numpy.distutils.system_info.atlas_3_10_threads_info'>
NOT AVAILABLE
atlas_3_10_info:
libraries lapack_atlas not found in /Library/Frameworks/Python.framework/Versions/3.9/lib
libraries satlas,satlas not found in /Library/Frameworks/Python.framework/Versions/3.9/lib
libraries lapack_atlas not found in /usr/local/lib
libraries satlas,satlas not found in /usr/local/lib
libraries lapack_atlas not found in /usr/lib
libraries satlas,satlas not found in /usr/lib
<class 'numpy.distutils.system_info.atlas_3_10_info'>
NOT AVAILABLE
atlas_threads_info:
Setting PTATLAS=ATLAS
libraries lapack_atlas not found in /Library/Frameworks/Python.framework/Versions/3.9/lib
libraries ptf77blas,ptcblas,atlas not found in /Library/Frameworks/Python.framework/Versions/3.9/lib
libraries lapack_atlas not found in /usr/local/lib
libraries ptf77blas,ptcblas,atlas not found in /usr/local/lib
libraries lapack_atlas not found in /usr/lib
libraries ptf77blas,ptcblas,atlas not found in /usr/lib
<class 'numpy.distutils.system_info.atlas_threads_info'>
NOT AVAILABLE
atlas_info:
libraries lapack_atlas not found in /Library/Frameworks/Python.framework/Versions/3.9/lib
libraries f77blas,cblas,atlas not found in /Library/Frameworks/Python.framework/Versions/3.9/lib
libraries lapack_atlas not found in /usr/local/lib
libraries f77blas,cblas,atlas not found in /usr/local/lib
libraries lapack_atlas not found in /usr/lib
libraries f77blas,cblas,atlas not found in /usr/lib
<class 'numpy.distutils.system_info.atlas_info'>
NOT AVAILABLE
FOUND:
extra_compile_args = ['-faltivec', '-I/System/Library/Frameworks/vecLib.framework/Headers']
extra_link_args = ['-Wl,-framework', '-Wl,Accelerate']
define_macros = [('NO_ATLAS_INFO', 3), ('HAVE_CBLAS', None)]
/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/distutils/dist.py:274: UserWarning: Unknown distribution option: 'define_macros'
warnings.warn(msg)
running bdist_wheel
running build
running config_cc
unifing config_cc, config, build_clib, build_ext, build commands --compiler options
running config_fc
unifing config_fc, config, build_clib, build_ext, build commands --fcompiler options
running build_src
build_src
building py_modules sources
building library "npymath" sources
Could not locate executable gfortran
Could not locate executable f95
Could not locate executable f90
Could not locate executable f77
Could not locate executable xlf90
Could not locate executable xlf
Could not locate executable ifort
Could not locate executable ifc
Could not locate executable g77
Could not locate executable g95
Could not locate executable pgfortran
don't know how to compile Fortran code on platform 'posix'
adding 'build/src.macosx-10.9-universal2-3.9/numpy/core/src/npymath' to include_dirs.
None - nothing done with h_files = ['build/src.macosx-10.9-universal2-3.9/numpy/core/src/npymath/npy_math_internal.h']
building library "npysort" sources
adding 'build/src.macosx-10.9-universal2-3.9/numpy/core/src/common' to include_dirs.
None - nothing done with h_files = ['build/src.macosx-10.9-universal2-3.9/numpy/core/src/common/npy_sort.h', 'build/src.macosx-10.9-universal2-3.9/numpy/core/src/common/npy_partition.h', 'build/src.macosx-10.9-universal2-3.9/numpy/core/src/common/npy_binsearch.h']
building library "npyrandom" sources
building extension "numpy.core._multiarray_tests" sources
building extension "numpy.core._multiarray_umath" sources
adding 'build/src.macosx-10.9-universal2-3.9/numpy/core/src/umath' to include_dirs.
adding 'build/src.macosx-10.9-universal2-3.9/numpy/core/src/npymath' to include_dirs.
adding 'build/src.macosx-10.9-universal2-3.9/numpy/core/src/common' to include_dirs.
numpy.core - nothing done with h_files = ['build/src.macosx-10.9-universal2-3.9/numpy/core/src/umath/funcs.inc', 'build/src.macosx-10.9-universal2-3.9/numpy/core/src/umath/simd.inc', 'build/src.macosx-10.9-universal2-3.9/numpy/core/src/umath/loops.h', 'build/src.macosx-10.9-universal2-3.9/numpy/core/src/umath/matmul.h', 'build/src.macosx-10.9-universal2-3.9/numpy/core/src/umath/clip.h', 'build/src.macosx-10.9-universal2-3.9/numpy/core/src/npymath/npy_math_internal.h', 'build/src.macosx-10.9-universal2-3.9/numpy/core/src/common/templ_common.h', 'build/src.macosx-10.9-universal2-3.9/numpy/core/include/numpy/config.h', 'build/src.macosx-10.9-universal2-3.9/numpy/core/include/numpy/_numpyconfig.h', 'build/src.macosx-10.9-universal2-3.9/numpy/core/include/numpy/__multiarray_api.h', 'build/src.macosx-10.9-universal2-3.9/numpy/core/include/numpy/__ufunc_api.h']
building extension "numpy.core._umath_tests" sources
building extension "numpy.core._rational_tests" sources
building extension "numpy.core._struct_ufunc_tests" sources
building extension "numpy.core._operand_flag_tests" sources
building extension "numpy.fft._pocketfft_internal" sources
building extension "numpy.linalg.lapack_lite" sources
building extension "numpy.linalg._umath_linalg" sources
building extension "numpy.random._mt19937" sources
building extension "numpy.random._philox" sources
building extension "numpy.random._pcg64" sources
building extension "numpy.random._sfc64" sources
building extension "numpy.random._common" sources
building extension "numpy.random.bit_generator" sources
building extension "numpy.random._generator" sources
building extension "numpy.random._bounded_integers" sources
building extension "numpy.random.mtrand" sources
building data_files sources
build_src: building npy-pkg config files
running build_py
creating build/lib.macosx-10.9-universal2-3.9
creating build/lib.macosx-10.9-universal2-3.9/numpy
copying numpy/conftest.py -> build/lib.macosx-10.9-universal2-3.9/numpy
copying numpy/version.py -> build/lib.macosx-10.9-universal2-3.9/numpy
copying numpy/_globals.py -> build/lib.macosx-10.9-universal2-3.9/numpy
copying numpy/__init__.py -> build/lib.macosx-10.9-universal2-3.9/numpy
copying numpy/dual.py -> build/lib.macosx-10.9-universal2-3.9/numpy
copying numpy/_distributor_init.py -> build/lib.macosx-10.9-universal2-3.9/numpy
copying numpy/setup.py -> build/lib.macosx-10.9-universal2-3.9/numpy
copying numpy/ctypeslib.py -> build/lib.macosx-10.9-universal2-3.9/numpy
copying numpy/matlib.py -> build/lib.macosx-10.9-universal2-3.9/numpy
copying numpy/_pytesttester.py -> build/lib.macosx-10.9-universal2-3.9/numpy
copying build/src.macosx-10.9-universal2-3.9/numpy/__config__.py -> build/lib.macosx-10.9-universal2-3.9/numpy
creating build/lib.macosx-10.9-universal2-3.9/numpy/compat
copying numpy/compat/py3k.py -> build/lib.macosx-10.9-universal2-3.9/numpy/compat
copying numpy/compat/__init__.py -> build/lib.macosx-10.9-universal2-3.9/numpy/compat
copying numpy/compat/setup.py -> build/lib.macosx-10.9-universal2-3.9/numpy/compat
copying numpy/compat/_inspect.py -> build/lib.macosx-10.9-universal2-3.9/numpy/compat
creating build/lib.macosx-10.9-universal2-3.9/numpy/compat/tests
copying numpy/compat/tests/__init__.py -> build/lib.macosx-10.9-universal2-3.9/numpy/compat/tests
copying numpy/compat/tests/test_compat.py -> build/lib.macosx-10.9-universal2-3.9/numpy/compat/tests
creating build/lib.macosx-10.9-universal2-3.9/numpy/core
copying numpy/core/umath.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core
copying numpy/core/fromnumeric.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core
copying numpy/core/_dtype.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core
copying numpy/core/_add_newdocs.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core
copying numpy/core/_methods.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core
copying numpy/core/_internal.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core
copying numpy/core/_string_helpers.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core
copying numpy/core/multiarray.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core
copying numpy/core/_asarray.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core
copying numpy/core/records.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core
copying numpy/core/__init__.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core
copying numpy/core/setup_common.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core
copying numpy/core/memmap.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core
copying numpy/core/overrides.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core
copying numpy/core/getlimits.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core
copying numpy/core/_dtype_ctypes.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core
copying numpy/core/defchararray.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core
copying numpy/core/shape_base.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core
copying numpy/core/machar.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core
copying numpy/core/setup.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core
copying numpy/core/numeric.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core
copying numpy/core/function_base.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core
copying numpy/core/einsumfunc.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core
copying numpy/core/umath_tests.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core
copying numpy/core/_ufunc_config.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core
copying numpy/core/_exceptions.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core
copying numpy/core/numerictypes.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core
copying numpy/core/_type_aliases.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core
copying numpy/core/cversions.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core
copying numpy/core/arrayprint.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core
copying numpy/core/code_generators/generate_numpy_api.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core
creating build/lib.macosx-10.9-universal2-3.9/numpy/core/tests
copying numpy/core/tests/test_numerictypes.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core/tests
copying numpy/core/tests/test_scalar_methods.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core/tests
copying numpy/core/tests/test_scalarmath.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core/tests
copying numpy/core/tests/test_item_selection.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core/tests
copying numpy/core/tests/test_machar.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core/tests
copying numpy/core/tests/test_unicode.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core/tests
copying numpy/core/tests/test_arrayprint.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core/tests
copying numpy/core/tests/test_scalarbuffer.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core/tests
copying numpy/core/tests/test_indexerrors.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core/tests
copying numpy/core/tests/test_print.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core/tests
copying numpy/core/tests/test_half.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core/tests
copying numpy/core/tests/test_mem_overlap.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core/tests
copying numpy/core/tests/test_shape_base.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core/tests
copying numpy/core/tests/test_deprecations.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core/tests
copying numpy/core/tests/__init__.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core/tests
copying numpy/core/tests/test_errstate.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core/tests
copying numpy/core/tests/test_records.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core/tests
copying numpy/core/tests/test_scalarinherit.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core/tests
copying numpy/core/tests/test_indexing.py -> build/lib.macosx-10.9-universal2-3.9/numpy/core/tests
问题描述 / Describe the bug
当前未做大小写兼容, 如 ‘-D platform=iOS ’ 这种自定义参数
Is your feature request related to a problem? Please describe.
支持在flybirds_config.json中设置browser locale
Describe the solution you'd like
同一个定位方式, 在不同的语言环境下可能会导致定位表现不一致
Describe alternatives you've considered
希望能通过配置文件自定义locale
context = browser.new_context(record_video_dir="videos",
ignore_https_errors=True,
locale="zh-CN")
好的,这个问题,确实需要到 PaddleOCR 尋求解決了,可能是PaddleOCR的Bug 。
Originally posted by @clgwlg in #11 (comment)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.