问题标签 [pytest-selenium]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
739 浏览

python - 使用 PyScaffold 3.0 生成项目后,pytest 命令失败

我按照文档中的说明进行操作,我有这个:

当我在命令行运行它时:

你知道那个错误是关于什么的吗?

我也尝试过运行:

测试在tests目录中,但我得到同样的错误。

我的 setup.cfg 看起来像:

我的 setup.py 看起来像:

我认为罪魁祸首可能是 setup.cfg 中的这个,但我不知道该怎么办:

0 投票
2 回答
1227 浏览

python-3.x - Using pytest-variables in a module outside a function

I am using Pytest and Pytest-variables with parametrized test functions to try and reduce duplication of code across test cases. I have this working with hard-coded strings within the test module: similar to this; however, I have no idea how to import the variables from my variable file outside of the scope of a function. Any help is greatly appreciated and I understand this may not be possible using pytest-variables, but I wanted to post here to make sure I am not missing something.

Working code

None working code, but an example of what I would like.

0 投票
2 回答
467 浏览

python - 在 pytest/xdist 框架中存储全局配置数据

我正在使用 python + pytest + xdist + selenium 网格构建一个测试框架。该框架需要与预先存在的自定义日志系统对话。作为此日志记录过程的一部分,我需要提交 API 调用:设置每个新的测试运行,在这些测试运行中设置测试用例,并将字符串和屏幕截图记录到这些测试用例。

第一步是设置一个新的测试运行,其 API 调用返回(除其他外)一个测试运行 ID。我需要保留此 ID 以供所有测试用例阅读。我想把它放在某个全局变量中,但是用 xdist 运行我的测试会导致框架失去对值的跟踪。

我试过了:

  • 使用“全局”类;它在使用 xdist 时忘记了值。
  • 在我的 conftest.py 文件中保存一个全局变量;同样的问题,使用 xdist 时值会被丢弃。到处导入我的 conftest 似乎也是错误的。
  • 在 conftest 中放置一个“全局”类;一样。

此时,我正在考虑将其写入临时文件,但这似乎很原始,而且我认为我忽略了一个更好的解决方案。跨多个 xdist 线程存储和访问全局数据的最正确、pytest 风格的方法是什么?

0 投票
1 回答
1183 浏览

python-3.x - https上的远程硒网格不起作用

我工作的公司要求/印象深刻的是,当使用我们在 Docker 实例中的 AWS 中托管的远程 selenium 网格服务器时,我们所有的 selenium 测试流量都通过 https 进行。

到目前为止,这似乎一直有效,但使用的是最新版本的 selenium 3.14。即使是最简单的测试,我现在也收到了 100 条“InsecureRequestWarnings”。我已经诊断出这些是由与 selenium 网格的 https 连接引起的,而不是它自身的测试目标 url,因为如果我从本地 selenium 服务器和 webdriver 运行相同的测试,我不会遇到相同的问题。

我正在使用以下内容:python 3.6.4、pytest 3.7.2、pytest-selenium 1.13、selenium 3.14(本地和远程 selenium 网格)、chromedriver 2.41(本地和远程)、certifi 2018.8.13、urllib3 1.23

从各种 Windows 机器(服务器 2008、Windows 10 等)运行

在运行以下代码(基本上是我的 conftest.py 和一个简单的登录测试脚本的组合)时,我收到以下警告(其中 62 个重复)。

我的示例代码:

如您所见,我正在调用的 selenium 网格服务器的地址是 https://selenium.mygriddocker.com.au/wd/hub(不是实际的真实地址)

并且我已经验证它确实具有由公共机构 (Comodo) 颁发的有效证书。注意如果我回滚到 urllib3 和 certifi,我没有这个问题,但我不确定它在什么时候停止工作

那里的很多人都在压制警告,但我实际上希望证书能够正常工作。

显而易见的解决方案是按照链接并按照他们的建议添加证书验证,但问题是如何通过 selenium RemoteConnection 类发送连接池管理器参数?

来自https://urllib3.readthedocs.io/en/latest/user-guide.html#ssl的建议修复:

当我深入研究 selenium 库时,我发现 urllib3.PoolManager 的使用位于 remote_connection 模块中,但它没有任何参数可用于在调用 PoolManager 时通过附加信息发送。您可以在我的示例代码中看到 executor 对象是我调用 remote_connection 的地方(通过 webdriverwrapper,在常规 selenium 中,路径是 selenium/webdriver/remote/remote_connection )

RemoteConnection 类没有设置我可以看到的 PoolManager。

我尝试只编辑 remote_connection,希望将证书信息硬编码到文件中,以便以后弄清楚如何包装它。因此,我cert_reqs='CERT_REQUIRED', ca_certs=certifi.where()在看到 urllib3.PoolManager() 的地方添加了行(我还将证书导入到该模块中)。靠一些惊人的愚蠢运气,它确实奏效了。现在我不知道如何包装它。

有没有人对如何使远程硒通过 https 工作有任何其他想法?

0 投票
3 回答
2405 浏览

python - 使用 pytest-flask + pytest-selenium (docker) 测试 Flask 应用程序

我正在尝试在 docker 容器中测试 Flask Web 应用程序,这对我来说是新的。我的堆栈如下:

  • 火狐
  • pytest-硒
  • pytest烧瓶

这是我的 Flask 应用程序文件:

现在,我的测试文件验证了我的索引页的标题:

当我运行测试时:

我收到以下错误(这似乎是由于 Firefox 不在无头模式下)。

我可以运行firefox --headless,但似乎我的 pytest 夹具无法进行设置。有一个更好的方法吗?

selenium.get()现在,如果我urlopen只是尝试正确初始化应用程序及其连接:

我得到错误:

urllib.error.URLError:

我需要以不同的方式启动实时服务器吗?或者我应该在某处更改我的主机+端口配置?

0 投票
2 回答
451 浏览

python - 如何将参数传递给 Pytest 中的 Selenium 测试函数?

我想让我的测试更灵活。例如,我有一个 _test_login_ 可以与多个不同的登录凭据一起使用。我如何将它们作为参数传递而不是对它们进行硬编码?

我现在拥有的:

如何用更灵活的方式替换最后两行中的字符串文字?

我想要这样的东西:

你能通过调用脚本来解释如何做到这一点:

pytest main.py *specifiedEmail* *specifiedPW*

0 投票
0 回答
204 浏览

selenium - 如何使用 xdist 运行 pytest-selenium 并使用 cli arg 驱动程序?

我正在尝试使用 xdist 并行运行多个测试,并根据用户的命令行参数(例如 --driver Remote/Chrome/etc)确定 webdriver

最终,我试图把它扔到 docker 中,以便它可以在 gitlab 管道中使用。

这是我尝试过的..

conftest.py

test_login.py

这给了我错误..

如果我尝试从 setup 夹具中删除范围,我会从 conftest.py 收到以下错误

以前在没有 xdist 集合的情况下执行此方法。如果可能的话,我该如何完成这项工作,我做错了什么?

0 投票
1 回答
87 浏览

python - 有没有办法使用 python selenium 获取网站的所有“内部 html 文本”及其对应的坐标?

我可以使用以下代码获取 div 元素:

通过遍历 div 并使用 .text 属性,我也可以获取文本

代码:

但在我的用例中,我想要文本的位置和大小。请帮忙 !!

我的代码:

每当我尝试 .location 或 .size 属性时,我都会收到 Unicode 错误。

免责声明:我已经搜索了所有帖子,所以这不是一个重复的问题。

0 投票
1 回答
1826 浏览

python - 如何通过命令行将 firefox/chrome 无头模式传递给 pytest

我需要以无头模式远程运行我的 selenium 测试用例。

目前,我在 py.test 命令下运行

对于无头模式,我需要在conftest.py文件中处理

但我需要在命令行中使用该选项,而不是在conftest.py文件中处理该选项

0 投票
1 回答
692 浏览

selenium - Pytest Selenium elem.send_keys() 导致 TypeError:“NoneType”类型的对象没有 len()

我正在尝试将数据发送到登录文本框,但是当我使用“send_keys”时出现错误..

tests\util.py:123: 在 HTML5_login elem.send_keys(userid) ..\selenium\webdriver\remote\webelement.py:478: 在 send_keys {'text': "".join(keys_to_typing(value)),


值 =(无,)

E TypeError: 'NoneType' 类型的对象没有 len()

我不知道为什么当我让它传递一个断言并单击该元素时它说该元素是“NoneType”。当我运行测试时,我什至可以看到它单击元素!