2017-10-26 7 views
0

내가 드라이버로 크롬 내 셀레늄 프로젝트에서 여러 옵션을 사용하기 위해 노력하고있어,하지만 난 헤드리스 (headless) + 확장자를 추가 할 때 오류가있어이셀레늄 C#을 여러 옵션

System.InvalidOperationException occurred HResult=0x80131509
Message=unknown error: failed to wait for extension background page to load: chrome-extension://jmphljmgnagblkombahigniilhnbadca/_generated_background_page.html from unknown error: page could not be found: chrome-extension://jmphljmgnagblkombahigniilhnbadca/_generated_background_page.html (Driver info: chromedriver=2.33.506120 (e3e53437346286c0bc2d2dc9aa4915ba81d9023f),platform=Windows NT 10.0.15063 x86_64) Source=WebDriver StackTrace: at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse) at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters) at OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities desiredCapabilities) at OpenQA.Selenium.Remote.RemoteWebDriver..ctor(ICommandExecutor commandExecutor, ICapabilities desiredCapabilities) at OpenQA.Selenium.Chrome.ChromeDriver..ctor(ChromeOptions options) at SeleniumTest.Form1.<>c__DisplayClass5_0.b__0() in C:\Users\Ussagui\source\repos\SeleniumTest\SeleniumTest\Form1.cs:line 53 at System.Threading.Tasks.Task.InnerInvoke() at System.Threading.Tasks.Task.Execute()

내 코드는 다음과 같습니다

var option = new ChromeOptions(); 

      option.AddArguments("--headless --disable-gpu"); 
      option.AddExtensions(@"EXTENSION PATH"); 

      var driver = new ChromeDriver(option); 
      var action = new Actions(driver); 

      driver.Navigate().GoToUrl(URL); 

확장 또는 인수 만 사용하는 경우 작동합니다. 어떻게 둘 다 사용할 수 있습니까? 또는 나는 기울인다? 감사합니다.

답변

0

몇 가지 포인트 :

  1. 인수 비록 --headless--disable-gpu은 상호 연관되어 있지만, 별도의 작업에 사용된다. 따라서 우리는 그것들을 개별적으로 지정할 필요가 있습니다.

  2. 최적의 코드 블록을 사용하고 디버그/사용되지 않는 코드를 주석 처리/제거하십시오.

    var option = new ChromeOptions(); 
    option.AddArguments("--headless"); 
    option.AddArguments("--disable-gpu"); 
    option.AddExtensions(@"EXTENSION PATH"); 
    var driver = new ChromeDriver(option); 
    driver.Navigate().GoToUrl(URL); 
    
+0

아야 덕분에 짝짓기 : driver.Navigate().GoToUrl(URL);으로 우리가 언급 할 필요가 있도록/당신의 마지막 코드 블록은 모양을 var action = new Actions(driver);

  • 제거 주조 할 WebDriver 인스턴스를 필요로하지 않습니다! 내가 집에 갈 때 나는 시험해 볼 것이다. "var action = 새 작업 (드라이버); 정보 나는 그것을 사용하기 때문에 내가 "언론"을 입력하지만 나는 잊어 버려, 미안 해요! Btw "var 옵션"과 "ChromeOptions 옵션"("var"또는 "ChromeOptions"사용) 간의 차이점 고마워요. – Ussagui

  • +0

    여전히 작동하지 않습니다. 동일한 오류, 또 다른 아이디어가 있습니까? – Ussagui