testing - Katalon 自定义 "uploadFiles"关键字未加载文件

标签 testing automation web-testing katalon-studio

Katalon 自定义“uploadFiles”关键字未加载文件。

Katalon 网站声明 Katalon 关键字“UploadFile”将在该标签存在于页面上时起作用(该标签存在于我的测试页面上)。

建议的解决方法是使用以下自定义关键字;我已将其添加到我的项目中。当我运行脚本时,“uploadFile”关键字找到对象并打开“Windows 资源管理器”并就在那里。我认为问题在于“uploadFile”关键字从不将"file"传递给“Windows 资源管理器”进行加载。 Katalon 通过了这一步,因为它找到了对象。不确定为什么“关键字”不起作用...任何人都可以看到我哪里出错了吗?

Package=tools.uploadFiles
//Added for uploadFiles keyword
import java.awt.Robot
import java.awt.Toolkit
import java.awt.datatransfer.StringSelection
import java.awt.event.KeyEvent

public class uploadFiles {
@Keyword
def uploadFile (TestObject to, String filePath) {
    WebUI.click(to)
    StringSelection ss = new StringSelection(filePath);
    Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, 
    null);
            Robot robot = new Robot();
    robot.keyPress(KeyEvent.VK_ENTER);
    robot.keyRelease(KeyEvent.VK_ENTER);
    robot.keyPress(KeyEvent.VK_CONTROL);
    robot.keyPress(KeyEvent.VK_V);
    robot.keyRelease(KeyEvent.VK_V);
    robot.keyRelease(KeyEvent.VK_CONTROL);
    robot.keyPress(KeyEvent.VK_ENTER);
    robot.keyRelease(KeyEvent.VK_ENTER);
    }
}

//Added the following lines to the script's "import" header section
import com.kms.katalon.core.annotation.Keyword as Keyword
import com.kms.katalon.core.testobject.TestObject as TestObject
import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI

//Script test steps
WebUI.openBrowser('')
WebUI.navigateToUrl(GlobalVariable.testURL)
WebUI.maximizeWindow()
WebUI.delay(GlobalVariable.shortDelay)

Line that calls keyword: CustomKeywords.'tools.uploadFiles.uploadFile'(findTestObject('FILE_UPLOAD/Page_VirtualWealth/UploadFile0'),'C:\\Users\\eversda\\Downloads\\TestFiles\\BlankCheque.png')

Windows Explorer opens without file name

谢谢戴夫

最佳答案

“uploadFiles”现在在一些故障排除后工作

Keywords.tools.uploadFiles.groovy
//Added for use with "uploadFiles"
import java.awt.Robot
import java.awt.Toolkit
import java.awt.datatransfer.StringSelection
import java.awt.event.KeyEvent

public class uploadFiles {
@Keyword
def uploadFile (TestObject to, String filePath) {
    WebUI.click(to)
    StringSelection ss = new StringSelection(filePath);
    Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null);
    Robot robot = new Robot();      
    robot.keyPress(KeyEvent.VK_ENTER);
    robot.keyRelease(KeyEvent.VK_ENTER);
    robot.delay(1000)
    robot.keyPress(KeyEvent.VK_CONTROL);
    robot.keyPress(KeyEvent.VK_V);
    robot.keyRelease(KeyEvent.VK_V);
    robot.delay(1000)
    robot.keyRelease(KeyEvent.VK_CONTROL);
    robot.keyPress(KeyEvent.VK_ENTER);
    robot.keyRelease(KeyEvent.VK_ENTER);        
    }
}

注意:确保使用正确的对象定位器,在我的例子中,以下内容适用于“label_upload fa fa-upload fa-l”

//[@class = 'upload fa fa-upload fa-lg pull-right'][count(. |//[@for = 'chooseFile0']) = count(//*[@for = 'chooseFile0'])]

脚本头...

import com.kms.katalon.core.annotation.Keyword as Keyword
import com.kms.katalon.core.testobject.TestObject as TestObject
import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI

脚本片段...

WebUI.delay(GlobalVariable.shortDelay) WebUI.comment('不要在脚本运行时点击 Katalon。这样做会导致 uploadFiles 不工作。')

CustomKeywords.'tools.uploadFiles.uploadFile'(findTestObject('FILE_UPLOAD/Page_VirtualWealth/label_upload fa fa-upload fa-l'), 'C:\Users\jdoe\Downloads\TestFiles\TestLicense.jpg') Thread.sleep(2000)//等待“打开”对话

WebUI.switchToWindowIndex('0')

CustomKeywords.'tools.uploadFiles.uploadFile'(findTestObject('FILE_UPLOAD/Page_VirtualWealth/label_upload fa fa-upload fa-l2'), 'C:\Users\jdoe\Downloads\TestFiles\TestPassport.png') Thread.sleep(2000)//等待“打开”对话

WebUI.switchToWindowIndex(0)

CustomKeywords.'tools.uploadFiles.uploadFile'(findTestObject('FILE_UPLOAD/Page_VirtualWealth/label_upload fa fa-upload fa-l_1'), 'C:\Users\jdoe\Downloads\TestFiles\Bank.pdf') Thread.sleep(2000)//等待“打开”对话

WebUI.switchToWindowIndex(0)

CustomKeywords.'tools.uploadFiles.uploadFile'(findTestObject('FILE_UPLOAD/Page_VirtualWealth/label_upload fa fa-upload fa-l_12'), 'C:\Users\jdoe\Downloads\TestFiles\Bill.pdf') Thread.sleep(2000)//等待“打开”对话

WebUI.switchToWindowIndex(0) ...

关于testing - Katalon 自定义 "uploadFiles"关键字未加载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48373790/

相关文章:

html - 学习跨浏览器开发(CSS/XHTML)

testing - Protractor "signing in"|| "login"测试

testing - 如何依次执行多个appium测试脚本?

android - ADB touchevent 不依赖于计算机工作

java - 如何使用 htmlunit 或 PanthomJS 滚动网页

javascript - 如何在testcafe中调用外部异步await函数

testing - 访问当前夹具的名称并在运行时进行测试

selenium - 使用 selenium webdriver 预先记录的步骤进行性能/负载测试

javascript - Testcafe 从元素中获取文本

json - 如何测试包含 java.time.Instant 字段的 spring-cloud-contract