我对selenium很陌生,因此开始尝试在笔记本电脑中设置selenium。我无法从我的简单代码中调用IE。详细信息如下。您能帮我了解问题出在哪里吗
IE版本:IE 11,IE驱动程序:64位,操作系统:Windows 10 64位,selenium版本:3.11
错误:
Started InternetExplorerDriver server (64-bit) 3.9.0.0 Listening on port 29313 Only local connections are allowed Exception in thread "main" org.openqa.selenium.WebDriverException: java.net.ConnectException: Failed to connect to localhost/0:0:0:0:0:0:0:1:29313 Build info: version: '3.11.0', revision: 'e59cfb3', time: '2018-03-11T20:33:08.638Z' System info: host: 'DESKTOP-B1D1PSJ', ip: '192.168.79.96', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_161' Driver info: driver.version: InternetExplorerDriver at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:92) at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:545) at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:209) at org.openqa.selenium.ie.InternetExplorerDriver.run(InternetExplorerDriver.java:223) at org.openqa.selenium.ie.InternetExplorerDriver.<init>(InternetExplorerDriver.java:215) at org.openqa.selenium.ie.InternetExplorerDriver.<init>(InternetExplorerDriver.java:152) at testing.Tryselenium.main(Tryselenium.java:31) Caused by: java.net.ConnectException: Failed to connect to localhost/0:0:0:0:0:0:0:1:29313 at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.java:240) at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:158) at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:256) at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:134) at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:113) at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:125) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:200) at okhttp3.RealCall.execute(RealCall.java:77) at org.openqa.selenium.remote.internal.OkHttpClient.execute(OkHttpClient.java:101) at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:101) at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:73) at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:136) at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83) ... 6 more Caused by: java.net.ConnectException: Connection refused: connect at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) at java.net.AbstractPlainSocketImpl.connect(Unknown Source) at java.net.PlainSocketImpl.connect(Unknown Source) at java.net.SocksSocketImpl.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at okhttp3.internal.platform.Platform.connectSocket(Platform.java:125) at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.java:238)
码:
mport java.util.Arrays; import java.util.List; import java.util.concurrent.TimeUnit; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.ie.InternetExplorerDriver; import org.openqa.selenium.remote.DesiredCapabilities; public class Tryselenium { public static void main(String[] args) { // TODO Auto-generated method stub WebDriver web; /*System.setProperty("webdriver.chrome.driver","C:\\Users\\Divakar\\Documents\\General\\Learnings\\Selenium\\Others\\Set Up files\\Browser Drivers\\" + "chromedriver_x32.exe"); ChromeOptions chromeOptions = new ChromeOptions(); chromeOptions.setExperimentalOption("excludeSwitches",Arrays.asList("test-type")); web = new ChromeDriver(chromeOptions); web.manage().window().maximize(); web.manage().timeouts().implicitlyWait(50,TimeUnit.SECONDS);*/ System.setProperty("webdriver.ie.driver","E:\\General\\Learnings\\Selenium\\Others\\Set Up files\\Browser Drivers\\" + "IEDriverServer.exe"); DesiredCapabilities capab = DesiredCapabilities.internetExplorer(); capab.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true); web = new InternetExplorerDriver(); web.manage().window().maximize(); web.manage().timeouts().implicitlyWait(50,TimeUnit.SECONDS); /*FirefoxDriver web = new FirefoxDriver(); web = new FirefoxDriver(); web.manage().window().maximize(); web.manage().timeouts().implicitlyWait(50,TimeUnit.SECONDS);*/ web.get("http://www.icicibank.com/"); web.findElement(By.xpath("/html/body/div[1]/div[1]/div[1]/div/a[1]")).click(); web.findElement(By.xpath("/html/body/div[1]/div[1]/div[1]/div/div[3]/div/ul[1]/li[1]/a")).click(); web.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div/div[1]/div/div[3]/a")).click(); web.findElement(By.name("AuthenticationFG.USER_PRINCIPAL")).sendKeys("507133118"); web.findElement(By.name("AuthenticationFG.ACCESS_CODE")).sendKeys("Soft2008"); web.findElement(By.name("Action.VALIDATE_CREDENTIALS")).click(); web.findElement(By.id("ContentLink1")).click(); WebElement accttable = web.findElement(By.xpath("/html/body/form/div/div[3]/div[1]/div[4]/div[2]/div/div/div[5]/div/div/div/div/div/div/div")); List<WebElement> all_rows = accttable.findElements(By.tagName("tr")); int j = 0; for (int i = 0; i < all_rows.size(); i++) { List<WebElement> rowAllCells = all_rows.get(i).findElements(By.tagName("td")); if(rowAllCells.size()>1) { String acctno=rowAllCells.get(2).getText(); if(rowAllCells.get(2).getText().trim().equalsIgnoreCase("602605049934")) { web.findElement(By.id("AccountSummaryFG.SELECTED_INDEX")).click(); ///html/body/form/div/div[3]/div[1]/div[4]/div[2]/div/div/div[5]/div/div/div/div/div/div/div/table/tbody/tr[4]/td[1]/input web.findElement(By.id("HREF_actNicNameOutput[" + j + "]")).click(); web.findElement(By.id("backBtn")).click(); web.findElement(By.id("VIEW_MINI_STATEMENT")).click(); web.findElement(By.id("HREF_Logout")).click(); web.close(); } else j = j + 1; } } } }
错误说明了一切:
3.9.0.0 Exception in thread "main" org.openqa.selenium.WebDriverException: java.net.ConnectException: Failed to connect to localhost/0:0:0:0:0:0:0:1:29313 Build info: version: '3.11.0', revision: 'e59cfb3', time: '2018-03-11T20:33:08.638Z' System info: host: 'DESKTOP-B1D1PSJ', ip: '192.168.79.96', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_161' Driver info: driver.version: InternetExplorerDriver
从错误堆栈跟踪中可以明显看出,新 会话 没有启动,并且 driver.version 也没有被识别。
您的主要问题是所使用的二进制文件之间的 版本兼容性 ,如下所示:
因此, Selenium Client v3.11.0 和 IEDriverServer v3.9.0.0 之间显然不匹配。
@Test
INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true