本文将分享selenium.common.exceptions.SessionNotCreatedException:消息:无法通过Selenium找到与Firefox46匹配的功能集的详细内容,此外
本文将分享selenium.common.exceptions.SessionNotCreatedException:消息:无法通过Selenium找到与Firefox 46匹配的功能集的详细内容,此外,我们还将为大家带来关于Appium问题解决方案(5)- selenium.common.exceptions.InvalidSelectorException: Message: Locator Strategy 'name' is not supported for this session、java – Selenium 3.0 Firefx驱动程序失败与org.openqa.selenium.SessionNotCreatedException无法创建新的远程会话、org.openqa.selenium.SessionNotCreatedException的实例源码、org.openqa.selenium.SessionNotCreatedException:通过Selenium v3.11.0启动Firefox v37时,找不到匹配的功能集的相关知识,希望对你有所帮助。
本文目录一览:- selenium.common.exceptions.SessionNotCreatedException:消息:无法通过Selenium找到与Firefox 46匹配的功能集
- Appium问题解决方案(5)- selenium.common.exceptions.InvalidSelectorException: Message: Locator Strategy 'name' is not supported for this session
- java – Selenium 3.0 Firefx驱动程序失败与org.openqa.selenium.SessionNotCreatedException无法创建新的远程会话
- org.openqa.selenium.SessionNotCreatedException的实例源码
- org.openqa.selenium.SessionNotCreatedException:通过Selenium v3.11.0启动Firefox v37时,找不到匹配的功能集
selenium.common.exceptions.SessionNotCreatedException:消息:无法通过Selenium找到与Firefox 46匹配的功能集
我这里必须有一些版本不匹配,因为我无法使用Python来实现Selenium来启动Firefox
Web浏览器。我使用的是Firefox的旧版本,因为此处的其他人具有相同的旧Python版本,而对于他们来说,旧版本的Firefox效果最佳。
码:
from selenium import webdriverfrom selenium import commonfrom selenium.webdriver import ActionChainsfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECfrom selenium.common.exceptions import TimeoutExceptionfrom selenium.common.exceptions import NoSuchElementExceptionfrom selenium.webdriver.common.desired_capabilities import DesiredCapabilitiesdriver=webdriver.Firefox(capabilities=DesiredCapabilities.FIREFOX)
错误:
Traceback (most recent call last): File "scrapeCommunitySelenium.py", line 13, in <module> driver=webdriver.Firefox(capabilities=DesiredCapabilities.FIREFOX) File "/Library/Python/2.7/site-packages/selenium/webdriver/firefox/webdriver.py", line 158, in __init__ keep_alive=True) File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 154, in __init__ self.start_session(desired_capabilities, browser_profile) File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 243, in start_session response = self.execute(Command.NEW_SESSION, parameters) File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 311, in execute self.error_handler.check_response(response) File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 237, in check_response raise exception_class(message, screen, stacktrace)selenium.common.exceptions.SessionNotCreatedException: Message: Unable to find a matching set of capabilities
版本信息:
- Python 2.7.10
- selenium3.8.0
- Firefox 46.0
- GeckoDriver 0.19.1(位于我的PATH环境变量中的文件夹中)
- MacOS 10.12.6
答案1
小编典典使用 Selenium 3.8.0时 ,必须将 GeckoDriver 用作必需项。但同样由于您使用 的Firefox v46.0
你必须设置能力 的提线木偶 的False
经过DesiredCapabilities()
如下:
from selenium import webdriverfrom selenium.webdriver.common.desired_capabilities import DesiredCapabilitiescap = DesiredCapabilities().FIREFOXcap["marionette"] = Falsebrowser = webdriver.Firefox(capabilities=cap, executable_path="C:\\path\\to\\geckodriver.exe")browser.get(''http://google.com/'')browser.quit()
Appium问题解决方案(5)- selenium.common.exceptions.InvalidSelectorException: Message: Locator Strategy 'name' is not supported for this session
背景
使用Appium Server 1.15.1版本
执行了以下脚本
test = driver.find_element_by_name("自动化测试") print(test.text)
报了以下错误
圈重点
selenium.common.exceptions.InvalidSelectorException: Message: Locator Strategy ''name'' is not supported for this session
简译: by_name 这种定位元素方式已经不支持了
然后查了下资料,发现是在appium1.5之后, by_name 的这种定位方式已经彻底移除
解决方法一
最简单,不再用 by_name 定位方式了,改用id、class、xpath、accessibility id
解决方法二
看了网上的教程【driver.js】,最终发现也是没用的,这里就不展开了~还是换个定位方式叭!
总结
以上是小编为你收集整理的Appium问题解决方案(5)- selenium.common.exceptions.InvalidSelectorException: Message: Locator Strategy ''name'' is not supported for this session全部内容。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。
原文地址:https://www.cnblogs.com/poloyy
java – 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)
解决方法
System.setProperty("webdriver.gecko.driver","path\\to\\geckodriver.exe")
检查这个link.
org.openqa.selenium.SessionNotCreatedException的实例源码
public void failsWhenRequestingNonCurrentPlatform() throws Throwable { Platform[] values = Platform.values(); Platform otherPlatform = null; for (Platform platform : values) { if (Platform.getCurrent().is(platform)) { continue; } otherPlatform = platform; break; } DesiredCapabilities caps = new DesiredCapabilities("java","1.0",otherPlatform); try { driver = new JavaDriver(caps,caps); throw new MissingException(SessionNotCreatedException.class); } catch (SessionNotCreatedException e) { } }
private ServerSideSession safeStart(DesiredCapabilities cap) { ServerSideSession session = null; try { // init session session = getServer().createSession(cap); if (session == null) { throw new SessionNotCreatedException( "The server is currently shutting down and doesn't accept new tests."); } // start session session.start(); return session; } catch (Exception e) { // Todo(user): Clean this up to meet logging best practices (should not log and throw). logger.atSevere().withCause(e).log("Error starting the session"); if (session != null) { session.stop(); } throw new SessionNotCreatedException(e.getMessage(),e); } }
public SeleniumHelper getSeleniumHelper() { if (helper == null) { DriverFactory currentFactory = getFactory(); if (currentFactory == null) { throw new StopTestException("Cannot use Selenium before configuring how to start a driver (for instance using SeleniumDriverSetup)"); } else { try { WebDriver driver = currentFactory.createDriver(); postProcessDriver(driver); SeleniumHelper newHelper = createHelper(driver); newHelper.setWebDriver(driver,getDefaultTimeoutSeconds()); setSeleniumHelper(newHelper); } catch (SessionNotCreatedException e) { throw new StopTestException("Unable to create selenium session using: " + currentFactory,e); } } } return helper; }
public void failsWhenRequestingANonJavaDriver() throws Throwable { DesiredCapabilities caps = new DesiredCapabilities("xjava",Platform.getCurrent()); try { driver = new JavaDriver(caps,caps); throw new MissingException(SessionNotCreatedException.class); } catch (SessionNotCreatedException e) { } }
public void failsWhenRequestingUnsupportedCapability() throws Throwable { DesiredCapabilities caps = new DesiredCapabilities("java",Platform.getCurrent()); caps.setCapability("rotatable",true); try { driver = new JavaDriver(caps,caps); throw new MissingException(SessionNotCreatedException.class); } catch (SessionNotCreatedException e) { } }
@Override public Response handle() throws Exception { ServerSideSession session = null; try { JsonObject capsJson = getRequest().getPayload().getJsonObject("desiredCapabilities"); session = safeStart(new DesiredCapabilities(JavaxJson.toJavaMap(capsJson))); if (session == null) { throw new SessionNotCreatedException("Failed to start session."); } Response r = new Response(); r.setSessionId(session.getSessionId()); r.setValue(session.getWebDriver().capabilities()); r.setStatus(0); return r; } catch (Exception e) { logger.atSevere().withCause(e).log(); if (session != null) { session.stop(); } if (e instanceof WebDriverException) { throw e; } else { throw new SessionNotCreatedException(e.getMessage(),e); } } }
org.openqa.selenium.SessionNotCreatedException:通过Selenium v3.11.0启动Firefox v37时,找不到匹配的功能集
我试图在Firefox中运行网站进行测试,但出现错误“驱动程序可执行文件的路径必须由webdriver.gecko.driver系统属性设置;”
我已经正确设置了路径,但仍然不知道问题出在哪里。这是我的代码:
if (browsers.equalsIgnoreCase("Firefox")) { String driverPath = System.getProperty("user.dir") + "\\src/test/java\\drivers\\geckodriver.exe"; System.setProperty("webdriver.firefox.marionette", "false"); driver = new FirefoxDriver(); driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); } else if (browsers.equalsIgnoreCase("Chrome")) { // String driverPath = System.getProperty("user.dir") + // "\\src\\Drivers\\chromedriver"; // System.setProperty("webdriver.chrome.driver", driverPath); System.setProperty("webdriver.chrome.driver", "D:\\chromedriver.exe"); driver = new ChromeDriver(); driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); }
这是我的代码的失败跟踪:
FAILED CONFIGURATION: @BeforeClass launchBrowserorg.openqa.selenium.SessionNotCreatedException: Unable to find a matching set of capabilitiesBuild info: version: ''3.8.0'', revision: ''924c4067df'', time: ''2017-11-30T11:36:59.109Z''System info: host: ''DSCHD-PC-180'', ip: ''192.168.6.122'', os.name: ''Windows 7'', os.arch: ''amd64'', os.version: ''6.1'', java.version: ''1.8.0_161''Driver info: driver.version: FirefoxDriverremote stacktrace: 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.W3CHandshakeResponse.lambda$new$0(W3CHandshakeResponse.java:57) at org.openqa.selenium.remote.W3CHandshakeResponse.lambda$getResponseFunction$2(W3CHandshakeResponse.java:104) at org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$0(ProtocolHandshake.java:123) org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:126) at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:73) at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:142) at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83) at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:601) at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:219) at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:142) at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:120) at Utility.UtilityMethods.openBrowser(UtilityMethods.java:26) at TestCases.LoginTestCase.launchBrowser(LoginTestCase.java:35) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124) at org.testng.internal.MethodInvocationHelper.invokeMethodConsideringTimeout(MethodInvocationHelper.java:59) at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:455) at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:222) at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:142) at org.testng.internal.TestMethodWorker.invokeBeforeClassMethods(TestMethodWorker.java:168) at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:105) at org.testng.TestRunner.privateRun(TestRunner.java:648) at org.testng.TestRunner.run(TestRunner.java:505) at org.testng.SuiteRunner.runTest(SuiteRunner.java:455) at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450) at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415) at org.testng.SuiteRunner.run(SuiteRunner.java:364) at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84) at org.testng.TestNG.runSuitesSequentially(TestNG.java:1208) at org.testng.TestNG.runSuitesLocally(TestNG.java:1137) at org.testng.TestNG.runSuites(TestNG.java:1049) at org.testng.TestNG.run(TestNG.java:1017) at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114) at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251) at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)SKIPPED CONFIGURATION: @AfterClass quitBrowserSKIPPED: registration
答案1
小编典典为了简化操作,在使用 Selenium Client v3.11.0 和 Firefox v37时, 您需要从 mozilla /
geckodriver 下载最新的
GeckoDriver 并将其保存在系统中的任何位置。接下来,在该行中传递 Key webdriver.gecko.driver* 以及
Value 作为 GeckoDriver 的 绝对路径 ,最后通过 DesiredCapabilities 类将功能
marionatte 设置为 false 并合并到 FirefoxOptions 实例的实例中以启动 Firefox
****System.setProperty()
____*____浏览器如下:
System.setProperty("webdriver.gecko.driver", "C:/path/to/geckodriver.exe");DesiredCapabilities dc = new DesiredCapabilities();dc.setCapability("marionatte", false);FirefoxOptions opt = new FirefoxOptions();opt.merge(dc);FirefoxDriver driver = new FirefoxDriver(opt);driver.get("https://stackoverflow.com");System.out.println("Application opened");System.out.println("Page Title is : "+driver.getTitle());driver.quit();
更新资料
根据您的评论更新,您正在使用 GeckoDriver v0.20.1 。
但是,如果您回顾一下 GeckoDriver v0.18.0 的发行说明,它显然会提到:
geckodriver now recommends Firefox 53 and greater
因此,使用 GeckoDriver v0.18.0 及更高版本,您必须强制使用Firefox
53及更高版本。要摆脱这种限制,您可以降级到以下任一版本:
- GeckoDriver v0.17.0
- GeckoDriver v0.16.1
今天的关于selenium.common.exceptions.SessionNotCreatedException:消息:无法通过Selenium找到与Firefox 46匹配的功能集的分享已经结束,谢谢您的关注,如果想了解更多关于Appium问题解决方案(5)- selenium.common.exceptions.InvalidSelectorException: Message: Locator Strategy 'name' is not supported for this session、java – Selenium 3.0 Firefx驱动程序失败与org.openqa.selenium.SessionNotCreatedException无法创建新的远程会话、org.openqa.selenium.SessionNotCreatedException的实例源码、org.openqa.selenium.SessionNotCreatedException:通过Selenium v3.11.0启动Firefox v37时,找不到匹配的功能集的相关知识,请在本站进行查询。
本文标签: