java quit问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java quit问题相关的知识,希望对你有一定的参考价值。

//发送端代码: import java.net.*; import java.io.*; public class UDPSend public static void main(String args[]) try String strToSend; byte[] bufsend; //发送报文缓冲区 byte[] bufrec; //接受报文缓冲区 DatagramSocket clientSocket = new DatagramSocket(); String ss=null; System.out.println("Input File name you want to transport:"); //输入想要传输的文件名 try BufferedReader bf=new BufferedReader(new InputStreamReader(System.in)); ss=bf.readLine(); catch(IOException e) File file=new File(ss); //文件输入流 FileInputStream fos=new FileInputStream(file); DataInputStream sysin=new DataInputStream(fos); while(true) // System.out.println("Waiting for input a line text..."); strToSend = sysin.readLine(); bufsend=strToSend.getBytes();//把字符串转换为字节数组 //构造DatagramPacket类对象clientpacket,服务器端口号约定为6789 DatagramPacket clientpacket=new DatagramPacket(bufsend, strToSend.length(),InetAddress.getByName("192.168.0.1"),6789); //输入一行后打包发送给服务器 clientSocket.send(clientpacket); if(strToSend.equals("quit")) break; bufrec=new byte[256]; DatagramPacket receivePacket = new DatagramPacket(bufrec,256); //接收数据报 clientSocket.receive(receivePacket); String received=new String(receivePacket.getData(),0); System.out.println("From Server:"+received); clientSocket.close(); catch(Exception e) e.printStackTrace(); 这里的quit表示什么?不是一般读到最后是null或-1的吗??

参考技术A quit就是一个字符串
strToSend.equals("quit")该表达试将返回一个布尔值。
如果字符串strToSend与"quit"相同,就返回真,否则返回假
quit就是那4个字母组成的字符穿

Selenium 3.12 在 driver.quit() @ FireFox 60 / Win 7 Home Premium / Java 10.0.1 / GeckoDriver 0.20.1 上

【中文标题】Selenium 3.12 在 driver.quit() @ FireFox 60 / Win 7 Home Premium / Java 10.0.1 / GeckoDriver 0.20.1 上显示错误【英文标题】:Selenium 3.12 shows an error on driver.quit() @ FireFox 60 / Win 7 Home Premium / Java 10.0.1 / GeckoDriver 0.20.1 【发布时间】:2018-10-22 16:01:25 【问题描述】:

我的电脑:

Win 7 / 64 位 - 已安装所有更新 火狐 60.0 / 64 位 Java 10.0.1 硒 3.12 Geckodriver 0.20.1 / 64 位 Eclipse 4.7.3a

JAVA-源码:

public class SeleniumFireFoxMinimal1                                                              
    public static void main(String[] args) throws InterruptedException                            
        System.setProperty("webdriver.gecko.driver", "e:\\geckodriverwrapper.bat");                       
        WebDriver driver = new FirefoxDriver();                 
        driver.get("http://www.toolsqa.com");                                                      
        driver.quit();                                                                             
                                                                                                  

geckodriverwrapper.bat:

@ECHO OFF  
ECHO Starting geckodriver: %0 %*  
E:\geckodriver.exe --log trace %* > NUL 2>&1  

Eclipse 控制台输出:

Starting geckodriver: E:\geckodriverwrapper.bat --port=27751 -b "C:\Program Files (x86)\Mozilla Firefox\firefox.exe"
Mai 12, 2018 1:14:15 VORM. org.openqa.selenium.remote.ProtocolHandshake createSession
INFORMATION: Detected dialect: W3C

Firefox 窗口关闭 15 秒后显示以下行:

Mai 12, 2018 1:14:37 VORM. org.openqa.selenium.os.OsProcess destroy
INFORMATION: Unable to drain process streams. Ignoring but the exception being swallowed follows.
org.apache.commons.exec.ExecuteException: The stop timeout of 2000 ms was exceeded (Exit value: -559038737)
    at org.apache.commons.exec.PumpStreamHandler.stopThread(PumpStreamHandler.java:295)
    at org.apache.commons.exec.PumpStreamHandler.stop(PumpStreamHandler.java:181)
    at org.openqa.selenium.os.OsProcess.destroy(OsProcess.java:135)
    at org.openqa.selenium.os.CommandLine.destroy(CommandLine.java:153)
    at org.openqa.selenium.remote.service.DriverService.stop(DriverService.java:222)
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:95)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:543)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:600)
    at org.openqa.selenium.remote.RemoteWebDriver.quit(RemoteWebDriver.java:443)
    at at.xxxxxxx.work.SeleniumFireFoxMinimal1.main(SeleniumFireFoxMinimal1.java:40)
Mai 12, 2018 1:14:37 VORM. org.openqa.selenium.os.OsProcess destroy
SCHWERWIEGEND: Unable to kill process Process[pid=4320, exitValue=1]

像这样的其他 Selenium 命令运行良好:

element = driver.findElement(By.id("sinp"));              
element.clear();                                                
element.sendKeys("black");                                      
element.submit();                                                                                                                                                           

这只是我电脑的问题吗?

driver.quit() 在 InternetExplorer 上工作没有问题。

也许我们必须重新打开这个问题?:

https://github.com/SeleniumHQ/selenium/issues/4678

https://github.com/mozilla/geckodriver/issues/954

https://bugzilla.mozilla.org/show_bug.cgi?id=1401109

现在(2018 年 5 月 15 日)我也在这里发布了:

https://github.com/mozilla/geckodriver/issues/1272

【问题讨论】:

【参考方案1】:

我没有干净的解决方案,但有一个解决方法:我将 driver.quit() 更改为 driver.close()。 这通常用于关闭窗口。但如果它是最后一个窗口,它可以工作。用

测试 geckodriver 0.18.0 Java 1.8.0_65 Raspbian GNU/Linux 8 (Jessie) 硒 3.14.0 火狐 52.9.0

【讨论】:

以上是关于java quit问题的主要内容,如果未能解决你的问题,请参考以下文章

Java+Selenium——浏览器退出quit和close的区别

PASCAL编程问题 ——Web浏览

golang(cgo) --- 不确定 C.quit 的名称

CoreData 通过 Quit 保存对象更改

为啥 QWebEngineUrlRequestInterceptor 在 app.quit() 之后仍然存在

调用 quit() 后清理 QThread