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/