html - 在 powershell 中访问 groovy 变量
问题描述
在 Jenkins 中,我使用 groovy 创建了一个由复选框控制的可折叠部分,如下所示
常规脚本:
html =
'''
<form>
Threads:<br>
<input type="text" name="Threads"><br>
Duration:<br>
<input type="text" name="Duration"><br>
RampUP:<br>
<input type="text" name="RampUP"><br>
</form>
'''
if (Override_Execution_Details .equals("Yes"))
{return html}
当我们选中复选框时,上面的代码将打开字段
如何在构建部分的 PowerShell 代码中访问文本框字段的值,例如线程、持续时间。
我做了一些以下更改
解决方案
您正在展示您构建的内容,而不是您尝试过的内容,或者出现错误或遇到问题。因此,产生了我们的假设。所以,既然你没有提供代码来检查,给你一个代码响应有点挑战。好吧,我从来没有使用过甚至见过 Jenkins,只是人们在论坛/问答网站等上谈论它。
PowerShell 不是用于 GUI 自动化的工具。如果您尝试开箱即用,则仅限于 SendKeys,但主要是用于在 GUI 上执行操作时发送内容,这确实有效,但在某些情况下可能不可靠。
您似乎在说您想从 GUI 中复制内容,您可以使用 SendKey7s 来完成,但我之前的评论仍然成立。因此,您需要一个更强大的 GUI 自动化工具。看:
AutoIT及其PowerShell cmdlet或类似工具,例如Selenium。
最后,如果它只是 HTML,在后端,只要你知道你想要的元素,你就可以做到这一点。然而,我对 Jenkins 一无所知,这个屏幕截图看起来像一个胖 x86/x64 GUI 表单。因此,您必须访问表单元素才能获取内容,就像使用 WinForms 或 WPF 一样。
WF示例:
# build form, take user input, output to screen
function Get-URL
{
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
$Form = New-Object System.Windows.Forms.Form
$Form.width = 300
$Form.height = 110
$Form.Text = ”Please enter a URL”
$txtURL = new-object System.Windows.Forms.TextBox;
$txtURL.Location = new-object System.Drawing.Size(130,7)
$txtURL.Size = new-object System.Drawing.Size(130,30)
$Form.Controls.Add($txtURL)
$lblURL = new-object System.Windows.Forms.Label
$lblURL.Location = new-object System.Drawing.Size(10,10)
$lblURL.size = new-object System.Drawing.Size(130,20)
$lblURL.Text = "Please enter a URL:"
$Form.Controls.Add($lblURL)
$btnSubmit = new-object System.Windows.Forms.Button
$btnSubmit.Location = new-object System.Drawing.Size(100,40)
$btnSubmit.Size = new-object System.Drawing.Size(100,20)
$btnSubmit.Text = "Submit"
$btnSubmit.Add_Click({Return-Get-URL})
$form.Controls.Add($btnSubmit)
$Form.Add_Shown({$Form.Activate()})
$x = $Form.ShowDialog()
return $txtURL.Text
}
function Return-Get-URL
{ $Form.Close() }
( $url = Get-URL )
推荐阅读
- reactjs - 如何组织 React + MobX 项目结构(存储、组件、组件的状态等)
- webpack - 为什么 vue-cli 有两个 vuejs 启动命令?
- c# - Avalonia UI - 如何从代码中获取/设置 UI 控件的属性
- xslt - 在 XSLT 中使用 for-each 的最佳方式
- python - 错误加密 Fernet 从文件中读取令牌
- compilation - 使用 LINK.EXE 和 C2.EXE 手动编译 VB6 项目
- python - 使用 Python / Apache Beam 进行 Google Cloud Storage 并发控制?
- excel - 代码片段不处理 MS Excel VBA
- mysql - 如何使用触发器更新多个表,从正在更新的表中的行中获取特定数据?
- php - 用当天的结果计算日期