我正在使用C#(.net framework 4)开发一些Web自动化工具。我正在使用Selenium webDriver和PhantomJS。这真是太棒了!
但有时我想使用“本机”PhantomJS js命令,如:uploadFile
或injectJs
有可能吗?
我现在如何使用phantomjs:
我使用--webdriver=
param启动phantomjs可执行文件。接下来是:
// connection
private bool ConnectToWebDriver()
{
try
{
_driver = new RemoteWebDriver(new Uri(localHost+':'+numericPortSelector.Value+"/wd/hub"),
DesiredCapabilities.PhantomJS());
_scriptExecutor = _driver as IJavaScriptExecutor;
_driver.Manage().Timeouts().SetPageLoadTimeout(new TimeSpan(0, 0, (int) numericTimeOut.Value));
return true;
}
catch (Exception)
{
return false;
}
}
谢谢!
答案 0 :(得分:1)
据我所知,WebDriver没有提供调用本机PhantomJs函数的可能性。
1。 injectJs
所以为了让js工作我会建议你以下: 调查JavascriptExecutor解决方法:
JavascriptExecutor js = (JavascriptExecutor) driver;
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("var x = $(\'"+webElementCSSSelector+"\');");
stringBuilder.append("x.click();");
js.executeScript(stringBuilder.toString());
注意:这个解决方案适合我,但我正在研究JAVA。
2。 uploadFile
要执行文件上载操作,请尝试使用机器人+剪贴板操作以及应该上载的文件位置
Robot robot = new Robot();
String fileToUploadLocation="C:\\test.png";
setClipboardData(fileToUploadLocation);
robot.delay(2000);
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);
public static void setClipboardData(String str){
StringSelection stringSelection = new StringSelection(str);
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringSelection,null);
}
注意:这对我来说也很好,但我在java上工作。 希望这会对你有所帮助。