- -
:
5 :
() ( )
, .. , (, , , )
web-
- , , ( )
:
- ? ?
:
Assert.IsTrue(driver.PageSource.Contains(" "));
(-?)
driver.FindElement(By.LinkText(" ")).Click();
-
- driver.FindElement(By.XPath("//div[contains(@id,'dayOfWeekPanel']));
Xpath - https://msdn.microsoft.com/ru-ru/library/ms256471(v=vs.110).aspx
:
Assert.IsFalse , ,
Assert.IsTrue , ,
Assert.AreEqual , , ,
Assert.AreNotEqual , , , .
Selenium :
ID
driver.FindElement(By.Id("popup_ok"));
name
XPath
driver.FindElement(By.XPath("//a[@id='toolbar_btn_taskactions_actionsbutton']/span[2]"));
driver.FindElement(By.LinkText(" "));
css
driver.FindElement(By.CssSelector("td.td_calendar_navigator > a > img"));
Id. Id , ( Id / ), Xpath.
:
1) : Internet Explorer, Firefox, Chrome
|
|
2) .
3) , :
- ;
- Nunit , , "_00_do_first()", "_01_do_second()", "_02_do_third()", . NUnit , , , - M_0_5_ManHourTest_ActivityCategory ( 5)
4)
5) - Thread.Sleep() , :
IWait<IWebDriver> wait = new OpenQA.Selenium.Support.UI.WebDriverWait(driver, TimeSpan.FromSeconds(10.00));
wait.Until(driver1 => { return driver.FindElement(By.XPath("//div[contains(text(),' ')]")); });
:
wait.Until(driver1 => ((IJavaScriptExecutor)driver).ExecuteScript("return document.readyState").Equals("complete"));
6) .., Id Id, Xpath, , , , Id ( ), Xpath :
driver.FindElement(By.XPath("//div[contains(@id,'dayOfWeekPanel') and contains(@class, 'dayOfWeekExpand')]//table[@id='workLogReport']//td[@class='workLogTableCell']//tr[not(contains(@style, 'display: none'))]//div[contains(@id,'divComboBoxHistoryObject') ]//span[contains(@class, 't-select t-header')]"));
7)
/
( )
: Exception, Error, ,
, -???
-???
Google Chrome:
1) https://github.com/dharrya/ChromeJSErrorCollector extension.crx
2) : Add->Existing Item
3) [TestFixtureSetup] :
var options = new ChromeOptions();
options.AddExtension("extension.crx");
Driver = new ChromeDriver(options);
4) :
public static void jsChromeErrors()
{
var javascriptDriver = Driver as IJavaScriptExecutor;
var errors = javascriptDriver.ExecuteScript("return window.JSErrorCollector_errors? window.JSErrorCollector_errors.pump(): []");
var writer = new StreamWriter("jsErrors.log");
|
|
var collection = errors as ReadOnlyCollection<object>;
foreach (var item in collection)
{
var errorObject = item as Dictionary<string, object>;
foreach (var field in errorObject)
{
Console.WriteLine(field.Key + " - " + field.Value);
writer.WriteLine(field.Key + " - " + field.Value);
}
Console.WriteLine("-------------------");
writer.WriteLine("-------------------");
}
writer.Flush();
writer.Close();
}
jsErrors.log, .
5) [TearDown] :
[TearDown]
public void TeardownTest()
{
Utils.jsChromeErrors();
var writer = System.IO.File.ReadAllText("jsErrors.log");
if (writer.ToString()!= "")
{
Assert.Fail("Error in console - " + writer);
}
}