首页 > 解决方案 > 在 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 代码中访问文本框字段的值,例如线程、持续时间。

我做了一些以下更改

新的 并尝试以 $env:Threads 的形式访问“线程”值“1234”;但它不起作用。请任何人都可以帮助我。

线程值

标签: htmlpowershelljenkinsgroovyjenkins-plugins

解决方案


您正在展示您构建的内容,而不是您尝试过的内容,或者出现错误或遇到问题。因此,产生了我们的假设。所以,既然你没有提供代码来检查,给你一个代码响应有点挑战。好吧,我从来没有使用过甚至见过 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 )

推荐阅读