0

私のコードは次のとおりです。Mac を使用してスクリプトを実行し、2 つのノードを実行しています。1 つは Windows で、もう 1 つは Mac 自体です。Mac でのアップロードは完璧に機能しますが、Windows へのアップロードは機能しません。

Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();    
StringSelection str = new StringSelection("C:\\Sheyan.pdf");   
clipboard.setContents(str, str);
if (systemType=="http://192.168.1.100:5555/wd/hub")    **(THIS IS THE WINDOWSOS NODE)**     
{       
    Robot robot = new Robot();      
    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);        
}   
else **(FOR MAC OS NODE)**
{       
    selenium.click(driver, UploadButton);       
    WebElement fileInput = driver.findElement(UploadButton);        
    fileInput.sendKeys("/Users/accesstesting/Documents/Sheyan.pdf");        
}
4

2 に答える 2

2

これは決して機能しません。ロボット コマンドは、スクリプトが実行されているマシンで実行され、ノードに渡されません。使用しているロボットの実装を使用すると、テストがローカル マシンで実行される場合にのみ機能します。

リモート ノードに対してテストを実行している場合は、ローカル ファイル ディテクタを使用します。

driver.setFileDetector(new LocalFileDetector())

次に、通常の sendKeys() メソッドを使用してアップロード入力にローカル ファイルを入力するだけで、Selenium はバックグラウンドで何らかの魔法を実行して、グリッドを介してファイルを渡し、正しくアップロードできるようにします。

于 2013-04-05T10:30:21.497 に答える
0

これは答えというよりも質問に似ていることはわかっていますが、それでもなお、Windows ノードで Robot を使用し、Mac ノードで Selenium を使用するのはなぜですか?

これを行うとどうなりますか?

 if (systemType=="http://192.168.1.100:5555/wd/hub")    **(THIS IS THE WINDOWSOS NODE)** 
 {       
  selenium.click(driver, UploadButton);       
  WebElement fileInput = driver.findElement(UploadButton);        
  fileInput.sendKeys("C:\\Sheyan.pdf");        
}

Windowsノードでセレンとドライバーが正しく初期化されている場合、これは機能するはずです

于 2013-04-03T08:55:21.197 に答える