如何从 Tcl Shell 触发非阻塞 Selenium Web 驱动程序启动?

How to trigger a non blocking Selenium web driver launch from Tcl Shell?

我在通过 wish shell 启动 Selenium Web Driver 时遇到问题。 我用过以下方法。

以下命令启动 Selenium 驱动程序但从未启动 returns

exec cmd /C java -jar C:/selenium/selenium-server-standalone-2.45.0.jar -Dwebdriver.chrome.driver=C:/selenium/chromedriver.exe

从不 returns amd 阻止愿望 shell。

有没有办法以非阻塞方式启动它。

也尝试了以下方法但没有成功:

eval exec "java -jar C:/selenium/selenium-server-standalone-2.45.0.jar -Dwebdriver.chrome.driver=C:/selenium/chromedriver.exe"

输出:

Registry key 'Software\JavaSoft\Java Runtime Environment\CurrentVersion'
has value '1.8', but '1.6' is required.
Error: could not find java.dll
Error: could not find Java SE Runtime Environment.

exec "java -jar C:/selenium/selenium-server-standalone-2.45.0.jar -Dwebdriver.chrome.driver=C:/selenium/chromedriver.exe"

输出:

couldn't execute "java -jar C:\selenium\selenium-server-standalone-2.45.0.jar -Dwebdriver.chrome.driver=C:\selenium\chromedriver.exe": No error

这行得通,但如果我们可以触发一个非阻塞的 cmd 调用,那将是一件好事。

thread::create {exec cmd /C "java -jar C:/selenium/selenium-server-standalone-2.53.0.jar -Dwebdriver.chrome.driver=C:/selenium/chromedriver.exe"}

&作为exec的最后一个参数,使子进程的运行异步和断开:

exec java -jar C:/selenium/selenium-server-standalone-2.45.0.jar -Dwebdriver.chrome.driver=C:/selenium/chromedriver.exe &

您可能不需要 cmd /C,也绝对不需要 eval。更重要的是,为了便于阅读,您可以分解出其中的一些内容:

set selenium C:/selenium/selenium-server-standalone-2.45.0.jar
set driver C:/selenium/chromedriver.exe
exec java -jar $selenium -Dwebdriver.chrome.driver=$driver &

如果您需要能够检测到子进程何时完成,则可以使用管道:

# Basic configuration
set seleniumDirectory C:/selenium
set seleniumVersion 2.45.0
# Convert to actual paths
set selenium [file join $seleniumDirectory selenium-server-standalone-$seleniumVersion.jar]
set driver [file join $seleniumDirectory chromedriver.exe]
# Use them
set pipeline [open |[list java -jar $selenium -Dwebdriver.chrome.driver=$driver] r]

然后你可以设置一个可读的fileevent,这样当管道被另一端关闭时你会得到通知。您可能还需要在其他时间从管道中读取数据;可能需要进行一些实验。

创建管道的语法有点古怪。是的,| 之前 [list。这是出于可怕的历史原因……