标签: automation

自动化 ssh 登录:tcl expect interact 命令的行为很奇怪

我想自动化 ssh 登录。经过一些研究,似乎 tcl/expect 是要走的路线。

但是,我的问题是,当交互接管我的终端时,东西不能按预期工作(不是故意的)。

例如,如果我调整终端的大小,它不会“占用”。此外,有时交互没有响应,有时它只是无缘无故地挂起。我在下面包含了我的代码。我对代码的问题是,我错过了什么吗?

另外,有没有更好的方法来做到这一点(使用另一种脚本语言?)我需要终端非常敏感,这与我在控制台上手动输入 ssh 没有什么不同。

proc Login {username server password} {
    set prompt "(%|>|\#|\\\$) $"

    spawn /usr/bin/ssh $username@$server
    expect { 
        -re "Are you sure you want to continue connecting (yes/no)?" {
            exp_send "yes\r"
            exp_continue 
            #continue to match statements within this expect {}
        }

        -nocase "password: " { 
            exp_send "$password\r" 
            interact
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

linux ssh automation tcl expect

1
推荐指数
1
解决办法
5263
查看次数

从SVN更新后,PhpStorm自动上传到默认服务器?

我尝试自动化我的项目,因为我需要完全:

- 从 SVN 更新文件
-将更改的文件上传到默认服务器

是否有任何方法可以通过 PhpStorm(设置..)做到这一点,
或者我是否需要外部工具?

谢谢你的答案

svn automation remote-host phpstorm

1
推荐指数
1
解决办法
1383
查看次数

如何使用 watir-webdriver 选择下拉菜单项

我正在使用 watir-webdriver 来自动化和测试应用程序。在此过程中,我需要单击下拉菜单并选择一个值,但是 watir 似乎无法选择该项目。请帮忙?

我的代码:

browser.text_field(:id => "user_username").set "#{username}"
browser.select_list(:id => 'user_date_of_birth_month').clear
puts browser.select_list(:id => 'user_date_of_birth_month').options
browser.select_list(:id => 'user_date_of_birth_month').select "9"
Run Code Online (Sandbox Code Playgroud)

HTML:

 <label class="sc-font-light sc-text-light next-light-label" for="user_date_of_birth_month
2. When were you born?<span class="inline-help"><span class="content hidden">For information on why we ask for your date of birth, see <a href="http://help.soundcloud.com/customer/portal/articles/1481474-why-do-you-need-my-date-of-birth-" target="_blank">this help center article</a>.</span></span>
Run Code Online (Sandbox Code Playgroud)

<div class="width_1_2"><select id="user_date_of_birth_month"name="user[date_of_birth][month]">
 <option value="">Month</option>
 <option value="1">January</option>
 <option value="2">February</option>
 <option value="3">March</option>
 <option value="4">April</option>
 <option value="5">May</option>
 <option value="6">June</option>
 <option value="7">July</option>
 <option value="8">August</option>
 <option value="9">September</option>
 <option value="10">October</option>
 <option value="11">November</option>
 <option …
Run Code Online (Sandbox Code Playgroud)

ruby automation watir webautomation watir-webdriver

1
推荐指数
1
解决办法
5160
查看次数

通过 ID 查找的 Selenium Web 驱动程序问题

这是我第一次使用 Selenium Web Driver(使用 Python),我试图转到搜索框,输入内容并点击提交。

相关的 HTML 如下所示:

<iframe id="mainFrame" class="" width="100%" height="" frameborder="0" title="Main content frame" onload="initFrame();" scrolling

....

<tr>

    <td style="vertical-align:middle;">
         <input id="terms" type="text" onblur="RevertText(this,'Enter Search Terms');" onfocus="AllowType(this,'Enter Search Terms')" value="Enter Search Terms" style="color: rgb(164, 164, 164);"></input>
    </td>
    <td style="vertical-align:middle;">
         <input id="srchButt" class="buttAcdmicOne" type="submit" value="Search"></input>
    </td>
</tr>
Run Code Online (Sandbox Code Playgroud)

我的代码如下所示:

driver.switch_to.frame("mainFrame")
elem = driver.find_element_by_id("terms")
elem.send_keys("Test")
Run Code Online (Sandbox Code Playgroud)

但这不起作用,我不知道为什么它不起作用......(可能有多个带有术语 id 的东西?)

编辑:

我收到的错误是:

selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: {"method":"id","selector":"terms"}
Run Code Online (Sandbox Code Playgroud)

我收到的新错误是:

selenium.common.exceptions.NoSuchFrameException: Message: no such frame: element is not a frame
Run Code Online (Sandbox Code Playgroud)

<iframe id="mainFrame" …
Run Code Online (Sandbox Code Playgroud)

python selenium automation web-scraping selenium-webdriver

1
推荐指数
1
解决办法
1954
查看次数

机器人框架“找不到资源文件”错误

我设计了这种架构,其中所有测试用例都在 Amazon.robot 文件中,机器人框架的所有低级关键字都将在两个单独的文件中(AmazonGui.robot 和 Commons.robot)

包含所有测试用例的 Amazon.robot 文件:

*** Settings ***
Documentation  This is some basic infor the whole suite
Resource  Resources/AmazonGui.robot
Resource  Resources/Common.robot

*** Variables ***


*** Test Cases ***
User must sign in to check out

    [Documentation]  This is some basic info about test
    [Tags]  Smoke

    Common.Begin Web Test
    AmazonGui.Search for Products
    AmazonGui.Select Product from Search Results
    AmazonGui.Add Product to Cart
    AmazonGui.Begin Checkout
    Common.End Web Test
Run Code Online (Sandbox Code Playgroud)

我还有另外两个具有低关键字的资源文件,所以基本上测试用例(Amazon.robot)正在调用低级关键字文件(Common.robot 和 AmazonGui.robot)。我已将资源文件导入到测试用例文件中。


AmazonGui.robot 文件,包含用于测试用例的低级关键字

*** Settings ***
Library   Selenium2Library

*** Keywords …
Run Code Online (Sandbox Code Playgroud)

automation robotframework

1
推荐指数
2
解决办法
2万
查看次数

TestNG 失败后不继续执行测试

我有一个带有页面对象模型的测试自动化框架。我所有的测试都位于同一个包中的不同类中。

在 testng.xml 我有

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Smoke Test">
    <test name="SmokeTest">
        <classes>
            <class name="name.test1"/>
            <class name="name.test2"/>
            <class name="name.test3"/>
        </classes>
    </test>
</suite>
Run Code Online (Sandbox Code Playgroud)

问题是在运行 TestNG.xml 之后,如果第一个测试失败,它将停止测试执行。但我想继续执行所有测试用例。

我在我的项目中使用 Jenkins,如果其中一项测试失败,它会立即停止执行。

测试示例

public class LoginTestTest {
    public AndroidDriver<AndroidElement> driver;
    public AOWebClient aoWebClient;

    AOWebClient aoWeb;
    public LoginTestTest(AndroidDriver<AndroidElement> driver, AOWebClient aoWeb){
        this.driver = driver;
        this.aoWeb = aoWeb;
        PageFactory.initElements(new AppiumFieldDecorator(driver), this);
    }

    public LoginTestTest() {
    }

    SoftAssert softAssert = new SoftAssert();

    @BeforeClass
    public void setUp() throws Exception {

        driver = DesiredCapabilitiesSetup.startAppiumServer();
        aoWebClient = DesiredCapabilitiesSetup.getAOWeb();

        LogIn …
Run Code Online (Sandbox Code Playgroud)

java testng automation

1
推荐指数
1
解决办法
2万
查看次数

Behat 错误 - 步骤已定义

这是我的功能文件 功能:作为访问者,我应该能够加载主页

  @javascript @program
  Scenario: View first page
    When I fill in the following:
      | username | myusername |
      | password | mypass |
    And press "Login"
    Then I should see "Dashboard"
    Then I go to "/programs/list"
Run Code Online (Sandbox Code Playgroud)

我的 composer.json 如下:

{
    "require": {
        "behat/mink-extension": "^2.2",
        "behat/mink-goutte-driver": "^1.2",
        "behat/mink-selenium2-driver": "^1.3"
    }
}
Run Code Online (Sandbox Code Playgroud)

我的 behat.yml 文件如下:

default:
  extensions:
    Behat\MinkExtension:
      base_url: http://myURL.com
      selenium2: ~
      browser_name: 'chrome'
  suites:
      defaults:
          contexts:
              - FeatureContext
              - Behat\MinkExtension\Context\MinkContext
Run Code Online (Sandbox Code Playgroud)

我的 FeatureContext.php 文件是

class FeatureContext extends MinkContext implements Context, SnippetAcceptingContext …
Run Code Online (Sandbox Code Playgroud)

php selenium automation behat selenium-chromedriver

1
推荐指数
1
解决办法
1760
查看次数

Rundeck 未为使用不同 ssh 端口的远程执行设置环境变量

Rundeck 将传递给作业的所有选项$RD_OPTION_*设置为环境变量,但当在具有不同 ssh 端口的远程节点中执行作业时,它不会设置这些变量。脚本成功登录到远程节点,但没有环境变量。请帮我解决。

示例作业定义:

<joblist>
  <job>
    <context>
      <options preserveOrder='true'>
        <option name='option1' required='true' />
      </options>
    </context>
    <description>job description</description>
    <dispatch>
      <excludePrecedence>true</excludePrecedence>
      <keepgoing>false</keepgoing>
      <rankOrder>ascending</rankOrder>
      <threadcount>1</threadcount>
    </dispatch>
    <executionEnabled>true</executionEnabled>
    <id>id</id>
    <loglevel>DEBUG</loglevel>
    <name>job name</name>
    <nodefilters>
      <filter>name: remote_node</filter>
    </nodefilters>
    <nodesSelectedByDefault>true</nodesSelectedByDefault>
    <notification>
      <onfailure>
        <email attachLog='true' recipients='abcdef@xyz.com' subject='job failure :(' />
      </onfailure>
      <onsuccess>
        <email recipients='abcdef@xyz.com' subject='job succes' />
      </onsuccess>
    </notification>
    <scheduleEnabled>true</scheduleEnabled>
    <sequence keepgoing='false' strategy='step-first'>
      <command>
        <exec>python path/to/script.py $RD_OPTION_OPTION1 > /path/to/logfile_$RD_JOB_EXECID.log 2>&1</exec>
      </command>
      <command>
        <exec>java -jar path/to/jarfile.jar ${option.option1} >> "/path/to/logfile_${job.execid}.log" 2>&1</exec>
      </command>
    </sequence>
    <uuid>job-uuid</uuid>
  </job>
</joblist>

<!-- …
Run Code Online (Sandbox Code Playgroud)

automation rundeck

1
推荐指数
1
解决办法
5385
查看次数

用 cURL 命令中的变量替换字符串

我正在尝试尽可能简单地自动化 GroupMe 机器人。从命令行发送消息的一种简单方法是使用以下命令:

curl -d '{"text" : "Your message here", "bot_id" : "this_is_a_secret_string"}' https://api.groupme.com/v3/bots/post
Run Code Online (Sandbox Code Playgroud)

在 Shell 脚本中,我想替换"Your message here"var,其中var被设置为来自不同命令的输出。这可能吗?

我用它替换了“您的消息”的事情不起作用:

var
$var
(var)
$(var)
{var}
${var}
Run Code Online (Sandbox Code Playgroud)

双引号 ("") 内的任何内容都被视为字符串,因此在这些方面没有做太多尝试。

linux shell automation curl groupme

1
推荐指数
1
解决办法
4902
查看次数

在文件夹中运行“ N”个Shell脚本

我有一段代码可以运行目录中的所有脚本: 运行文件夹中的所有shell脚本

for f in *.sh; do \
bash "$f" -H || break
done
Run Code Online (Sandbox Code Playgroud)

我也有运行一系列.sh脚本的代码:

for f in {1..3}madeupname.sh; do \
bash "$f" -H || break
done
Run Code Online (Sandbox Code Playgroud)

现在,我不想运行所有.sh脚本或一系列.sh脚本,而是要运行“ N”个.sh脚本,其中N是任意数量,例如3个.sh脚本。

对我来说,N个文件的运行顺序并不重要。

linux bash shell automation loops

1
推荐指数
1
解决办法
86
查看次数