2015-03-18 2 views
1

Использование транспортной сети, страница входа non-angular, где главная страница является угловой. следовательно, не может запускать браузер с url, используя NgWebDriver, возможно, так как он ищет угловые. пытался angular.ignoreSynchronization="false". Но та же проблема. Если я использую angDriver.WrappedDriver.FindElement для перекрестного входа в систему, угловые объекты на главной странице не распознаются - Asynchronous скрипт error-timeout.Транспортировочная сетка, не угловая страница входа

driver = new ChromeDriver("C:\\FTWork\\DriverFiles\\chromedriver_win32\\"); 
driver.Manage().Timeouts().SetScriptTimeout(TimeSpan.FromSeconds(20)); 
angDriver = new NgWebDriver(driver,"[ng-app='Phoenix']"); 
string root=angDriver.RootElement; 
angDriver.WrappedDriver.Navigate().GoToUrl(url); 
angDriver.WrappedDriver.Manage().Window.Maximize(); 
driver = angDriver.WrappedDriver; 
driver.FindElement(By.Id("UserID")).Clear(); 
driver.FindElement(By.Id("UserID")).SendKeys(""); 
driver.FindElement(By.Id("Password")).SendKeys(""); 
driver.FindElement(By.Id("searchsubmit")).Click(); 
System.Threading.Thread.Sleep(10000); 
string dolAmt = angDriver.FindElement(NgBy.Binding("activeValue")).Text; 
+0

Я точно знаю, что вы столкнулись. Возможно ли предоставить вам доступ к вашему логину, как вы переходите на угловые страницы? – Saifur

+0

@Saifur - Извините, не сможет раскрыть логин Но ng-приложение определено внутри html-тега и тела в нем, но когда мы делаем rootElement-body отображается – ReuseAutomator

+0

См. ответ .. – Saifur

ответ

1

Я надеюсь, что это будет сделано.

_driver = new ChromeDriver("C:\\FTWork\\DriverFiles\\chromedriver_win32\\"); 
_driver.Manage().Timeouts().SetScriptTimeout(TimeSpan.FromSeconds(10));; 
//Do whatever for log in with chrome driver 

string url = "url for angular page"; 
_ngWebDriver = new NgWebDriver(_driver, "[ng-app='Phoenix']"); 
//You have to naviagate to url in order the _ngWebDriver to know the angular page NOT click and go to angular page 
_ngWebDriver.Navigate().GoToUrl(url); 
_ngWebDriver.Manage().Window.Maximize(); 
//The script timeout is almost essential since most of protractor mechanism are dependent of client side script.  

//start finding elements with NgBy class 
NgWebElement ngElement = _ngWebDriver.FindElement(NgBy.Model("model")); 
ngElement.Clear(); 

EDIT

driver = new ChromeDriver("C:\\FTWork\\DriverFiles\\chromedriver_win32\\"); 
driver.Manage().Timeouts().SetScriptTimeout(TimeSpan.FromSeconds(20)); 
driver.FindElement(By.Id("UserID")).Clear(); 
driver.FindElement(By.Id("UserID")).SendKeys(""); 
driver.FindElement(By.Id("Password")).SendKeys(""); 
driver.FindElement(By.Id("searchsubmit")).Click(); 


// Phoenix is the ng-app of the coming angular page 
string url = "url for angular page containing [ng-app='Phoenix']" 
NgWebDriver angDriver = new NgWebDriver(driver,"[ng-app='Phoenix']"); 

// don't switch to wrapper driver 
angDriver.Navigate().GoToUrl(url); 
angDriver.Manage().Window.Maximize(); 
driver = angDriver.WrappedDriver; 
string dolAmt = angDriver.FindElement(NgBy.Binding("activeValue")).Text; 
+0

@ Сайфур-Пробовал то же самое, что и вчера, дал угловой URL-адрес напрямую. Но было предложено логин до того, который не является угловым, там он терпит неудачу. Нужно ли передавать SetScriptTimeout или SetPageLoadTimeout, как и выше его SetPage. – ReuseAutomator

+0

@ Chan1385 Вы ​​правы, это 'SetScriptTimeout' – Saifur

+0

Вы использовали' IwebDriver' для входа в систему или 'NgWebDriver'? И используете ли вы шаблон PageObject? – Saifur

Смежные вопросы