GVKun编程网logo

Java中的selenium异常(org.openqa.selenium.remote.UnreachableBrowserException)(selenium 异常)

8

关于Java中的selenium异常和org.openqa.selenium.remote.UnreachableBrowserException的问题就给大家分享到这里,感谢你花时间阅读本站内容,更

关于Java中的selenium异常org.openqa.selenium.remote.UnreachableBrowserException的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Chrome浏览器中的Selenium在线程“main”org.openqa.selenium.WebDriverException中显示异常:等待驱动程序服务器启动超时、FireFox中的Selenium OpenQA.Selenium.DriverServiceNotFoundException、java – Selenium 3.0 Firefx驱动程序失败与org.openqa.selenium.SessionNotCreatedException无法创建新的远程会话、java+selenium报异常org.openqa.selenium.StaleElementReferenceException的解决方案等相关知识的信息别忘了在本站进行查找喔。

本文目录一览:

Java中的selenium异常(org.openqa.selenium.remote.UnreachableBrowserException)(selenium 异常)

Java中的selenium异常(org.openqa.selenium.remote.UnreachableBrowserException)(selenium 异常)

我知道正在运行的线程数量很多,但是没有一个可以解决此问题。我正在尝试使用selenum获取aspx页面。但是它在这行代码中抛出UnreachableBrowserException
WebDriver driver = new ChromeDriver();。chrome实例正在打开,但随后几秒钟后,它抛出了我上面提到的异常。

这是我的示例代码。

System.setProperty("webdriver.chrome.driver",            "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe");        WebDriver driver = new ChromeDriver();        driver.get("http://some aspx page with form");            System.out.println("!!!!! Got the page !!!!!");            driver.close();            driver.quit();

以下是堆栈跟踪。

Exception in thread "main" org.openqa.selenium.remote.UnreachableBrowserException: Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure.Build info: version: ''2.40.0'', revision: ''fbe29a9'', time: ''2014-02-19 20:54:28''System info: host: ''E7D4C9EFE70614'', ip: ''192.168.1.12'', os.name: ''Windows 7'', os.arch: ''amd64'', os.version: ''6.1'', java.version: ''1.7.0_45''Driver info: driver.version: ChromeDriver    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:567)    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:218)    at org.openqa.selenium.chrome.ChromeDriver.startSession(ChromeDriver.java:181)    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:113)    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:117)    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:160)    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:149)    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:106)    at HtmlParser.main(HtmlParser.java:31)Caused by: org.openqa.selenium.WebDriverException: Timed out waiting for driver server to start.Build info: version: ''2.40.0'', revision: ''fbe29a9'', time: ''2014-02-19 20:54:28''System info: host: ''E7D4C9EFE70614'', ip: ''192.168.1.12'', os.name: ''Windows 7'', os.arch: ''amd64'', os.version: ''6.1'', java.version: ''1.7.0_45''Driver info: driver.version: ChromeDriver    at org.openqa.selenium.remote.service.DriverService.start(DriverService.java:165)    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:62)    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:546)    ... 8 moreCaused by: org.openqa.selenium.net.UrlChecker$TimeoutException: Timed out waiting for [http://localhost:12233/status] to be available after 20008 ms    at org.openqa.selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.java:104)    at org.openqa.selenium.remote.service.DriverService.start(DriverService.java:163)    ... 10 moreCaused by: com.google.common.util.concurrent.UncheckedTimeoutException: java.util.concurrent.TimeoutException    at com.google.common.util.concurrent.SimpleTimeLimiter.callWithTimeout(SimpleTimeLimiter.java:143)    at org.openqa.selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.java:79)    ... 11 moreCaused by: java.util.concurrent.TimeoutException    at java.util.concurrent.FutureTask.get(Unknown Source)    at com.google.common.util.concurrent.SimpleTimeLimiter.callWithTimeout(SimpleTimeLimiter.java:130)    ... 12 more

我的文章数量很多,但找不到任何解决方案。我的Chrome版本是33.0.1750.154 m。

答案1

小编典典

我已经下载了chromedriver,而不是设置路径,而是将路径chrome.exe设置为chromedriver.exe工作了。 C:\
Program Files(x86)\ chromedriver \ chromedriver.exe

Chrome浏览器中的Selenium在线程“main”org.openqa.selenium.WebDriverException中显示异常:等待驱动程序服务器启动超时

Chrome浏览器中的Selenium在线程“main”org.openqa.selenium.WebDriverException中显示异常:等待驱动程序服务器启动超时

code is correct. added code for time out exception. implicitlyWait added
public class SeleniumClass {

    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver","C:\\\\Drivers\\\\chromedriver.exe");
        //System.setProperty("webdriver.gecko.driver","F:/Selenium/Jars and Drivers/Drivers/Firefox/geckodriver-v0.29.0-win64/geckodriver.exe");
        WebDriver driver = new ChromeDriver();
        //WebDriver driver = new FirefoxDriver();
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5));
        driver.get("http://www.google.com");
    }

}
,

https://sites.google.com/a/chromium.org/chromedriver/

尝试 - 我下载了最新的稳定版本并且它有效。

FireFox中的Selenium OpenQA.Selenium.DriverServiceNotFoundException

FireFox中的Selenium OpenQA.Selenium.DriverServiceNotFoundException

我正在尝试开始编写Selenium测试,并且我编写的第一个非常基本的测试因exception失败OpenQA.Selenium.DriverServiceNotFoundException

using OpenQA.Selenium;using OpenQA.Selenium.Firefox;namespace WebDriverDemo{        class Program    {        static void Main(string[] args)        {            IWebDriver driver = new FirefoxDriver();            driver.Url = "http://www.google.com";        }    }}

调试器说我需要下载geckodriver.exe并将其设置在我的PATH变量上,这已经完成,但仍然会出现相同的异常。当我对进行相同的操作时ChromeDriver,效果很好。

同样,根据MDN,如果我使用的是Selenium
3.0或更高版本,则应默认启用它。我在Windows 10计算机上使用Selenium 3.0.1。

答案1

小编典典

您可以使用System.setProperty()方法将geckodriver位置添加到PATH中,或仅将其添加到代码中。

看看下面的链接。它显示了Java中的基本代码,您需要编写等效的C#。但是它提到了使用GeckoDriver的步骤。如果仍然无法使用,请分享您得到的错误。

http://www.automationtestinghub.com/selenium-3-0-launch-firefox-with-
geckodriver/

java – Selenium 3.0 Firefx驱动程序失败与org.openqa.selenium.SessionNotCreatedException无法创建新的远程会话

java – Selenium 3.0 Firefx驱动程序失败与org.openqa.selenium.SessionNotCreatedException无法创建新的远程会话

Selenium 3.0 Firefx驱动程序通过org.openqa.selenium.SessionNotCreatedException失败:无法创建新的远程会话.
System.setProperty("webdriver.gecko.driver","..<Path>../geckodriver.exe");
capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette",true);
driver = new FirefoxDriver(capabilities);


Caused by: org.openqa.selenium.SessionNotCreatedException: Unable to create new remote session. desired capabilities = Capabilities [{marionette=true,firefoxOptions=org.openqa.selenium.firefox.FirefoxOptions@23aa363a,browserName=firefox,moz:firefoxOptions=org.openqa.selenium.firefox.FirefoxOptions@23aa363a,version=,platform=ANY}],required capabilities = Capabilities [{}]
Build info: version: '3.0.0',revision: '350cf60',time: '2016-10-13 10:48:57 -0700'
System info: host: 'D202540',ip: '10.22.19.193',os.name: 'Windows 7',os.arch: 'amd64',os.version: '6.1',java.version: '1.8.0_45'
Driver info: driver.version: FirefoxDriver
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:91)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:141)
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:82)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:601)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:241)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:128)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:259)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:247)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:242)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:135)

解决方法

你需要下载geckodriver.然后设置
System.setProperty("webdriver.gecko.driver","path\\to\\geckodriver.exe")

检查这个link.

java+selenium报异常org.openqa.selenium.StaleElementReferenceException的解决方案

java+selenium报异常org.openqa.selenium.StaleElementReferenceException的解决方案

因为页面内容有很多页,需要切换页数,但是切换跳转到第二页的时候,页面首先会自动刷新,导致出现如下异常:Exception in thread "main" org.openqa.selenium.StaleElementReferenceException: stale element reference: element is not attached to the page document

	//获取当前页面的table内容
	static int count = 0;
	public static List getPageTableContent(WebDriver driver,WebElement table,String refreshElement ){
		
		//获取当前页面的table
//把下面这行代码的注释去掉即可
//		table= driver.findElement(By.xpath(refreshElement));
		
		List<WebElement> rows = table.findElements(By.tagName("tr"));//根据行标签,获取所有行对象
		//String[] tableTitle = {"编号","配置名称","首页返回按钮","首页banner显示","极简尾页",""};
		ArrayList<String> tableContent = new ArrayList<>();
		for(WebElement row:rows){//从所有行中遍历每一行
			List<WebElement> col = row.findElements(By.tagName("td"));//一行中,所有列标签,
			for(WebElement cell:col){//一行中,所有的列(也就是单元格)
				String content = cell.getText();//每个单元格的内容
				tableContent.add(content);
				//System.out.println(content + "...content");
				//System.out.println(driver.findElement(By.xpath("//td[contains(text(),''可以'')]")).getText() + "...findElement");
				
			}
		}
		return tableContent;
	}
	
	//获取总页数
	public static int getPageAllNo(WebDriver driver){
		//获取总页数
				String pageCountSumStr = driver.findElement(
						By.xpath("//*[@id=''product_mgt_wrap'']/div/div[2]/div[3]/table/tbody/tr/td[8]/span")).getText();
				int pageCountSum = Integer.parseInt(pageCountSumStr.substring(3));
				return pageCountSum;
	}
	
	//获取当前页数
	public static int getCurrentPageNo(WebDriver driver){
		String pageCountSumStr = driver.findElement(
				By.xpath("//*[@id=''product_mgt_wrap'']/div/div[2]/div[3]/table/tbody/tr/td[8]/span")).getText();
		//获取当前页面页数
				String pageSource = driver.getPageSource();//获取当前页的源文件
				String pageElement = "pagination-num\" type=\"text\" value=\"";//在源文件中查找含有该字段的位置
				int pageIndex = pageSource.indexOf(pageElement);//通过上面的字段位置,定位文本框中的当前页数
				//通过定位出来的位置,获取文本框中的值 
	}
	//根据表格单元个内容定位单元格所在行
	/**
	 * @author:苏一叶 email:by.su@qq.com
	 * 1.进来先获取页面的总页数
	 * 2.如果总页数大于1
	 * 3.把每一条记录所有字段和记录所在的当前页数存入json中,表头为Key,值为Value。
	 * #3.把每一条记录中除编号外的其他字段和记录所在的当前页数存入json中,编号作为Key,其他已经存入json作为Value存入HashMap中。
	 * 4.传入需要定位的字符串,根据字符在json中查找对应的页数,把所有含有该字符的记录存到
	 * @throws InterruptedException 
	 */
	public static void getRangeFromRows(WebDriver driver,String str) throws InterruptedException{
		int pageCountSum = getPageAllNo(driver);//获取总页数
		int currentPageCount = getCurrentPageNo(driver);//获取当前页数
		
		//需要定位元素的xpath
		String strContent = "//*[contains(text(),''" + str + "'')]";
		//获取当前页面的table
        String refreshElement = "//*[@id=''product_mgt_wrap'']/div[1]/div[2]/div[2]/div[2]/div[2]/table";
		WebElement table= driver.findElement(By.xpath(refreshElement));
		                                              
		if(pageCountSum == 1){
			ArrayList<String> tableContent = (ArrayList)getPageTableContent(driver,table,refreshElement);
			for(String content:tableContent){
				if(content.contains(str)){//若包含需要查找定位的关键字str
					driver.findElement(By.xpath(strContent)).click();
				}
			}
			
		}else{//页面总数大于1的时候
			boolean flag = false;//设置一个跳出的标志位
			for(int i=0;i<pageCountSum&&!flag;i++){
				//当前页面等于1的时候
				if(currentPageCount==1){
					ArrayList<String> tableContent = (ArrayList)getPageTableContent(driver,table,refreshElement);
					
					for(String content:tableContent){
						if(content.contains(str)){//若包含需要查找定位的关键字str
							driver.findElement(By.xpath(strContent)).click();
							flag = true;//若找到,即跳转出循环
							break;//退出该循环体
						}
					}
					Thread.sleep(1000);
					currentPageCount += 1;//设置页数为2,页数大于1,逻辑转到else下面的代码块
				}else{
					//点击下一页的按钮,页面跳转到下一页,从第1页跳转到第2页
					driver.findElement(By.xpath("//*[@id=''product_mgt_wrap'']/div/div[2]/div[3]/table/tbody/tr/td[10]/a/span/span[2]")).click();
					Thread.sleep(1500);
					//从第2页开始,每翻一页,都进行查找定位
					for(int n=2;n<=pageCountSum&&!flag;n++){
						ArrayList<String> tableContent = (ArrayList)getPageTableContent(driver,table);
						//点击下一页按钮
						driver.findElement(By.xpath("//*[@id=''product_mgt_wrap'']/div/div[2]/div[3]/table/tbody/tr/td[10]/a/span/span[2]")).click();
						Thread.sleep(1000);
						currentPageCount = getCurrentPageNo(driver);//获取跳转后的页数
						
						for(String content:tableContent){
							if(content.contains(str)){//若包含需要查找定位的关键字str
								driver.findElement(By.xpath(strContent)).click();
								flag = true;//找到定位跳转到flag标志位
							}
						}
						/*//获取所有页面的内容
						tableContentAll.addAll((ArrayList)getPageTableContent(driver,table,refreshElement));*/
					}
				}
			}
			Thread.sleep(1000);
		}
	}

参考自:

http://www.cnblogs.com/fengpingfan/p/4583325.html

http://stackoverflow.com/questions/28066135/org-openqa-selenium-staleelementreferenceexception-stale-element-reference-ele

今天关于Java中的selenium异常org.openqa.selenium.remote.UnreachableBrowserException的分享就到这里,希望大家有所收获,若想了解更多关于Chrome浏览器中的Selenium在线程“main”org.openqa.selenium.WebDriverException中显示异常:等待驱动程序服务器启动超时、FireFox中的Selenium OpenQA.Selenium.DriverServiceNotFoundException、java – Selenium 3.0 Firefx驱动程序失败与org.openqa.selenium.SessionNotCreatedException无法创建新的远程会话、java+selenium报异常org.openqa.selenium.StaleElementReferenceException的解决方案等相关知识,可以在本站进行查询。

本文标签: