【发布时间】:2019-06-13 13:36:18
【问题描述】:
我们的健康检查是自动化的,我们所有的应用程序都通过 Selenium 登录,并且只在 Internet Explorer 上登录。
代码在直接从批处理文件执行时运行良好。但是,当 Jenkins 调用这个批处理 (.bat) 文件时,它并没有完全执行。
顺便说一句,平台是 Windows Server 2008 R2 Standard
这是.bat文件代码
@echo off
set path="";
set path="E:\XXXX\jre1.8.0_141\bin";
pushd E:\Jenkins_Softwares\SeleniumCode\HealthCheck_jar
SET JAVA_OPTS=-Xmx4g -Xms512m -XX:MaxPermSize=256m -XX:ReservedCodeCacheSize=128m -XX:MaxHeapSize=512m
java -jar HealthCheck_JenkinsNG.jar
在启动 IE 驱动程序之前,我已在 JAVA 代码中添加了这些额外的 IE 选项。
InternetExplorerOptions options = new InternetExplorerOptions();
options.introduceFlakinessByIgnoringSecurityDomains();
options.enableNativeEvents();
options.destructivelyEnsureCleanSession();
当 Jenkins 执行批处理文件时,IE 浏览器会打开登录页面。显示此页面时有些奇怪 - 整个页面对齐被打乱,所有元素都向左对齐。 (我想强调的是,当直接执行批处理文件时,不会出现这样的页面对齐中断。元素保留其原始中心位置。出于某种原因,Jenkins 将所有这些设置在左侧)。 对齐对我来说并不完全是一个交易破坏者。
但是,当通过 Selenium 代码输入用户名和密码时,它会输入完美的文本框;但是当提交按钮被点击时,这些文本框中的内容变为空白,我无法登录。 (当通过直接运行批处理文件执行同一段代码时,我可以登录并显示我的应用程序的主页)
我怀疑 selenium java 代码是否有问题。因为,当从 .bat 文件甚至命令行运行时,甚至作为 IDE 中的 Java 应用程序运行时,它都能正确执行。 出于某种原因,当从 Jenkins 执行此操作时,它不起作用。
Jenkins 在 IE 11 上使用 Selenium 时是否需要设置任何选项或设置?因为我已经尝试过大量调整 selenium 代码,所以它们都会产生相同的结果 - 单击提交按钮后,登录页面上的元素会被清除。
另外,顺便提一下,所有这些都只在 Jenkins 的一个主节点上运行。没有从节点。
【问题讨论】:
-
要设置变量,推荐的语法是
Set "variable=value"。您能否解释一下为什么要从内置系统变量%PATH%中删除每个位置。 -
不确定对齐问题,但对于登录相关问题,我们需要查看您的硒代码以及该网页的 HTML 和 JS 代码。它可以帮助缩小问题范围。
-
系统安装了JAVA 1.6。我无法升级它,因为 1.6 是在同一系统上使用的其他一些应用程序的基本要求。因为 Selenium 需要 JAVA 1.8,所以我只是在执行这个批处理文件时引用 1.8 库,从而为我的 selenium 测试提供安全启动所需的平台。这很好用,正如我在帖子中提到的那样,当直接执行批处理文件时,硒脚本可以工作。
标签: selenium batch-file internet-explorer jenkins selenium-iedriver