繁体   English   中英

如何确定硒网格上的测试已完成

[英]How to determine a test has finished on a Selenium Grid

我正在寻找一种方法,以确保在Selenium Grid节点上进行每次测试后,某些事情会发生。 (例如,控制节点上的某些进程)

在Selenium Grid上做的最好方法是什么? 也许我不需要重新发明轮子,并且可以使用某种方式使用Selenium Grid基础结构来确定何时以编程方式完成对节点的测试?

使用SessionIds,

以下python代码将从网格中打印会话信息

import urllib.request
import json

grid_url = "http://127.0.0.1:4444/wd/hub"

sessions_req = urllib.request.urlopen(grid_url + "/sessions")
sessions_data = sessions_req.read()
sessions_encoding = sessions_req.info().get_content_charset('utf-8')

sessions = json.loads(sessions_data.decode(sessions_encoding))

for session in sessions["value"]:
    print (session["id"])
    print (session["capabilities"]["browserName"])

输出应为:

26294a77-7ab2-47f1-81fd-e11f593bd960 Firefox

29aa25cb-a60a-4454-a35c-315f76ff1251铬

测试完成后,您可以声明sessionIds以确定测试的状态。 活动会话必须具有ID。 要了解该特定测试,请将会话ID注入驱动程序实例中,并使用getCurrentUrl()或takeScreenshot()方法。

如果您专注于孤立浏览器的管理,那么Selenium Grid可以在配置级别为您提供帮助。 硒网格专门具有三个用于清理的参数。

  • browserTimeout以秒为单位:运行WebDriver命令时允许浏览器会话挂起的秒数(例如:driver.get(url))。 如果仍在处理WebDriver命令时达到超时,则会话将退出。 最小值为60。未指定,零或负值表示无限期等待。 默认值:0

  • cleanUpCycle(以毫秒为单位):指定集线器多久轮询一次正在运行的代理以获取超时(即挂起)的线程。 还必须指定超时选项。默认值:5000(5秒)

  • timeout,-sessionTimeout以秒为单位:指定在服务器自动终止最近X秒内没有任何活动的会话之前的超时。 然后将释放测试插槽,以供其他测试使用。 通常用于照顾客户
    崩溃。 对于网格中心/节点角色,还必须设置cleanUpCycle。
    默认值:1800

结合使用以上三个参数,可以将节点配置为自动关闭孤立的浏览器实例和会话。

您可以通过两种方式执行此操作

  1. 如果您希望清理完成而不考虑测试完成了什么,也就是说,您不关心测试,您只想知道用户何时调用driver.quit(),该信号向集线器发出终止会话消息,因此您可以在节点上进行某种清理。

为了实现这一点,您应该构建自己的自定义代理(通过扩展org.openqa.grid.selenium.proxy.DefaultRemoteProxy ),并将清理逻辑嵌入到afterSession()以便在driver.quit()被执行,但是在Grid释放会话之前。 您需要确保在此不会触发任何异常。 请参考我在网格上撰写的这篇文章,以帮助您了解如何使用自定义代理。

(要么)

  1. 如果您希望仅针对某些特定测试进行清理,也就是说,您可能正在运行某些特定测试,那么您希望对其进行屏幕记录,并且仅希望停止这些测试要求它。

如果这是您想要的,那么

  • 首先,您应该构建一个servlet,当它被调用时可以为您进行清理。 您只需将此servlet注入节点。 要了解如何执行此操作,请参阅我的这篇文章。
  • 在调用driver.quit()之前,您应该执行以下操作:

    1. 获取测试路由到的计算机的IP和端口地址。 您可以通过参考我的这篇博客文章或仅通过使用我的这个库来学习如何做。

现在,在调用driver.quit()之后,通过使用从上面获得的IP和端口地址,触发对添加到节点的servlet的http操作(GET/POST)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM