完成autoIt执行后将控制权返回Selenium测试执行

时间:2018-12-27 07:20:06

标签: java selenium selenium-webdriver focus autoit

我正在编写一个硒自动化测试脚本,其中涉及将我的图片作为个人资料图片上传到门户中。该过程成功执行,直到我调用runAutoit()函数,该函数将图片加载到Windows资源管理器框中并单击打开,但此后不考虑3行代码。总结一下我的担忧-“在runAutoIt()方法之后,控制不会继续执行硒。​​

这是我的硒代码,其中我调用了runAutoIT()函数


package com.cstudymaven.testscript;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.Test;

import com.cstudymaven.utilities.ReadExcel;
import com.cstudymaven.pompages.EditProfile;
import com.cstudymaven.pompages.SignInPage;
import com.cstudymaven.utilities.BaseTest;

public class TestScript extends BaseTest
{
SignInPage signin = null;
EditProfile edprf=null;

@Test
public void signUp() 
{

    JavascriptExecutor js = (JavascriptExecutor) driver;
        String[][] credentials = ReadExcel.getData(filePath, "User_Login");
    try {

        for (int i = 1; i < credentials.length; i++) {
            String email = credentials[0];
            String password = credentials[1];
            signin = new SignInPage(driver);
            signin.clickonLogin();
            Thread.sleep(1500);
            signin.enterEmail(email);
            Thread.sleep(1500);
            signin.enterPassword(password);
            signin.clicktoStart();
            edprf=new EditProfile(driver);
            wait = new WebDriverWait(driver, 10);
            Thread.sleep(1500);
            edprf.editprofile();
            Thread.sleep(1500);
            edprf.gotoprofile();
            Thread.sleep(1500);
            edprf.editlogo();
            wait = new WebDriverWait(driver, 10);
            Thread.sleep(2700);
            edprf.camera();
            Thread.sleep(2500);
            edprf.cfile();
            Thread.sleep(1500);
            runAutoIT();           

((JavascriptExecutor) driver).executeScript("window.focus();");
 js.executeScript("window.scrollBy(0,150)");  
  WebElement upld 
  =driver.findElement(By.xpath("//button[@type='submit']"));
   upld.click();

   }
   }

   catch (Exception e) 
             {
   e.printStackTrace();
   try 
   {

   } 
   catch (Exception e1) 
   {

   }

   }

   }               


    public void runAutoIT() throws Exception
    {
    String strFilePath="C:\\Users\\LOBO\\1Amanfred.jpg";    
    String strPath="C:\\Users\\LOBO\\eclipse- 
    workspace\\CaseStudyMaven\\InputData\\cstudymaven.exe";
    String strParameter=strPath+" "+strFilePath;
    Runtime.getRuntime().exec(strParameter);
    }

    }

我已经尝试过使用窗口焦点方法,并在try catch块中插入未执行的代码,但是没有成功。 runAutoit()函数之后的程序中的代码行不执行。

我希望测试执行在runAutoit()函数之后单击上载按钮,但实际上执行成功执行runAutoit()方法后,执行将停止。控制台中没有错误消息。

3 个答案:

答案 0 :(得分:0)

就像您在两个 AutoIT 方法之间诱导Thread.sleep(1500);进行硬编码的方式一样:

edprf.cfile();
Thread.sleep(1500);
runAutoIT();

runAutoIT();之后诱发一些 wait 以结束该过程,然后尝试将焦点集中在 Selenium 上,如下所示:

runAutoIT(); 
Thread.sleep(3500);
((JavascriptExecutor) driver).executeScript("window.focus();");

您可以在Return control to Selenium after executing an AutoIt script

中找到类似的讨论

答案 1 :(得分:0)

虽然我迟到了几年,但以下内容对您或其他人有帮助:

public void runAutoIT() throws Exception
    {
    String strFilePath="C:\\Users\\LOBO\\1Amanfred.jpg";    
    String strPath="C:\\Users\\LOBO\\eclipse- 
    workspace\\CaseStudyMaven\\InputData\\cstudymaven.exe";
    String strParameter=strPath+" "+strFilePath;
    // pay attention to this part
    Process p = Runtime.getRuntime().exec(strParameter);
    p.waitFor();
    //
}

答案 2 :(得分:-1)

((JavascriptExecutor) driver).executeScript("window.focus();");