私はこの問題に直面しています。私はこの質問がすでに存在することを知っています、そして、私は言及された解決策を試みました、それで私の構成とコードでこれを尋ねます。
以前はスクリプトが実行されていましたが、現在はそうではないので、基本的なオープンブラウザースクリプトを作成してみました。
Selenium WebDriverの最新バージョン: http://Selenium-release.storage.googleapis.com/3.5/Selenium-Java-3.5.0.Zip
ChromeDriverの最新バージョン: http://chromedriver.storage.googleapis.com/index.html?path=2.31/
基本的なOpenブラウザコード:
package Trial;
import Java.util.concurrent.TimeUnit;
import org.openqa.Selenium.WebDriver;
import org.openqa.Selenium.chrome.ChromeDriver;
public class Trial_Class {
public static void main(String args[]){
System.setProperty("webdriver.chrome.driver", "chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("http://www.youtube.com");
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
}
}
しかし、それでも私は以下のエラーを受け取っています:
Starting ChromeDriver 2.31.488763 (092de99f48a300323ecf8c2a4e2e7cab51de5ba8) on port 43967
Only local connections are allowed.
Exception in thread "main" org.openqa.Selenium.WebDriverException: chrome not reachable
(Driver info: chromedriver=2.31.488763 (092de99f48a300323ecf8c2a4e2e7cab51de5ba8),platform=Windows NT 6.3.9600 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 61.81 seconds
Build info: version: 'unknown', revision: 'unknown', time: 'unknown'
System info: Host: 'SWATI', ip: '192.168.0.5', os.name: 'Windows 8.1', os.Arch: 'AMD64', os.version: '6.3', Java.version: '1.8.0_121'
Driver info: driver.version: ChromeDriver
at Sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at Sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at Sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at Java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.openqa.Selenium.remote.ErrorHandler.createThrowable(ErrorHandler.Java:215)
at org.openqa.Selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.Java:167)
at org.openqa.Selenium.remote.JsonWireProtocolResponse.lambda$new$0(JsonWireProtocolResponse.Java:53)
at org.openqa.Selenium.remote.JsonWireProtocolResponse.lambda$getResponseFunction$2(JsonWireProtocolResponse.Java:91)
at org.openqa.Selenium.remote.ProtocolHandshake.lambda$createSession$24(ProtocolHandshake.Java:360)
at Java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)
at Java.util.Spliterators$ArraySpliterator.tryAdvance(Unknown Source)
at Java.util.stream.ReferencePipeline.forEachWithCancel(Unknown Source)
at Java.util.stream.AbstractPipeline.copyIntoWithCancel(Unknown Source)
at Java.util.stream.AbstractPipeline.copyInto(Unknown Source)
at Java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
at Java.util.stream.FindOps$FindOp.evaluateSequential(Unknown Source)
at Java.util.stream.AbstractPipeline.evaluate(Unknown Source)
at Java.util.stream.ReferencePipeline.findFirst(Unknown Source)
at org.openqa.Selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.Java:363)
at org.openqa.Selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.Java:137)
at org.openqa.Selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.Java:142)
at org.openqa.Selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.Java:82)
at org.openqa.Selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.Java:641)
at org.openqa.Selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.Java:254)
at org.openqa.Selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.Java:236)
at org.openqa.Selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.Java:137)
at org.openqa.Selenium.chrome.ChromeDriver.<init>(ChromeDriver.Java:178)
at org.openqa.Selenium.chrome.ChromeDriver.<init>(ChromeDriver.Java:167)
at org.openqa.Selenium.chrome.ChromeDriver.<init>(ChromeDriver.Java:124)
at Trial.Trial_Class.main(Trial_Class.Java:11)
前もって感謝します。
Chromedriverはlocalhostを解決するのに苦労し、その間に印刷されたことがわかりました
Timed out connecting to Chrome, retrying...
最初にipv6を介して接続しようとし、次にipv4にフォールバックすると思います。だから私のために働いたのは、このように「localhost」の優先度を変更することでした
必要なことは、優先度を変更することだけです。
RegEditを開き、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tcpip6\Parameters Create DisabledComponents DWORDレジストリ値に移動し、その値を20(16進数)に設定します。 src
Chromedriverは正常に起動しています:
「ポート43967でChromeDriver 2.31.488763(092de99f48a300323ecf8c2a4e2e7cab51de5ba8)を開始しています」
問題は、ブラウザ自体が応答しないことです。だから私は2つのアイデアがあります:
1)ブラウザがデフォルトの場所にインストールされていません。この場合、これをコードに追加します。
ChromeOptions options = new ChromeOptions();
options.setBinary("/path/to/other/chrome/binary");
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability(ChromeOptions.CAPABILITY, chromeOptions);
WebDriver driver = new ChromeDriver(capabilities);
2)ブラウザは最新バージョンですが、クロムドライバーは最新ではありません-現在は2.33です
あなたが設定する必要があります
setProperty(String key, String path)
ここ"key
"は "webdriver.chrome.driver
"および" path
"は「ドライバが保存されているパス」です。単一のスラッシュを使用します" /
"パス。
System.setProperty("webdriver.chrome.driver", "E:/chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("http://www.youtube.com");
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
上記のコードは、Selenium jar 3.5.0でうまく機能します。希望はあなたのシステムでもうまく機能します。