私はセレンRCを使用しています。グリッドから実行するためにファイル アップロードの Java コードを Selenium ノードに渡す必要がありますが、可能ですか?
私はセレンコードから呼び出している次のファイルアップロードコードを持っています:
package com.wipro.Base.Base20.QA.SeleniumTests.FullRegression;
import javax.swing.*;
import java.awt.event.KeyEvent;
import java.awt.*;
/**
* @author Bogdan Gusiev
* Date 29.03.2009
*/
public class FileChooserThread extends Thread {`
public FileChooserThread(String file) {
super(new FileRunner(file));
}
}
class FileRunner implements Runnable {
private String fullName;
public FileRunner(String fileName) {
this.fullName = fileName;
// run();
}
public void run() {
try {
Thread.sleep(1000);
Robot robot = new Robot(); //input simulation class
for (char c : fullName.toCharArray()) {
if (c == ':') {
robot.keyPress(KeyEvent.VK_SHIFT);
robot.keyPress(KeyEvent.VK_SEMICOLON);
robot.keyRelease(KeyEvent.VK_SHIFT);
} else if (c == '/') {
robot.keyPress(KeyEvent.VK_BACK_SLASH);
} else {
robot.keyPress(KeyStroke.getKeyStroke(
Character.toUpperCase(c), 0).getKeyCode());
}
}
robot.keyPress(KeyEvent.VK_ENTER);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}`
`//セレン呼び出しメソッドは次のとおりです。
protected void chooseFile(String element, String fileName) {
Number positionLeft = selenium.getElementPositionLeft(element);
Number positionTop = selenium.getElementPositionTop(element);
new FileChooserThread(fileName).start(); //launch input thread.
//this method will held current thread while FileChooser gives the file name
selenium.clickAt("file", positionLeft + ","+ positionTop);
}`