【问题标题】:How to do a File upload using selenium grid using the MacOS as a hub and WinOS as a node?如何使用 Selenium 网格使用 MacOS 作为集线器和 WinOS 作为节点进行文件上传?
【发布时间】:2013-04-03 04:06:39
【问题描述】:

我的代码如下,我正在使用 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");        
}

【问题讨论】:

  • 你是从 MAC 机器上运行脚本吗,网格和节点在哪里运行?

标签: file-upload automation selenium-webdriver selenium-grid


【解决方案1】:

这永远不会起作用,机器人命令在运行脚本的机器上运行,它们不会传递给节点。仅当测试在本地机器上运行时,使用您正在使用的机器人实现才能正常工作。

如果您正在针对远程节点运行测试,您想要做的是使用本地文件检测器:

driver.setFileDetector(new LocalFileDetector())

然后,您只需使用普通的 sendKeys() 方法使用本地文件填充上传输入,Selenium 将在后台执行一些魔法以通过网格传递任何文件,以便它们可以正确上传。

【讨论】:

  • 感谢您的回复。我确实尝试过这个并在远程节点上工作。但是,文件被上传,但弹出窗口没有关闭。当我手动关闭窗口时,文件已上传。
  • 您根本不应该点击按钮,让发送键为您处理。单击按钮后,您将进入 Selenium 无法处理的操作系统对话领域。
  • 单独的 sendkeys 不起作用。但是,如果没有单击,我使用了 verfiyElementExist,它与 sendkeys 一起工作得很好。 :)
【解决方案2】:

我知道这更像是一个问题而不是一个答案,但仍然:你为什么在 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");        
}

因为如果 selenium 和驱动程序在 Windows 节点上正确初始化,这应该可以工作

【讨论】:

  • 我试过这个,但我猜 sendKeys 确实有效。文件上传弹出窗口仍然是空的。
  • 我的一般想法是使用 Selenium 代码,而不是你现在正在做的 Robot。尝试调查 sendkeys,但它在您的代码中比在 selenium 本身中更容易出现问题......
猜你喜欢
  • 2018-06-12
  • 2018-12-08
  • 1970-01-01
  • 2013-07-07
  • 2017-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多