我已經在Selenium中配置了與Nunit並行運行的測試,但工作正常,但我不確定如何將自定義方法添加到混合中,而無需打開第二個瀏覽器實例並打破測試。Selenium使用擴展方法進行並行測試
我有基地:
namespace ParallelTests
{
public class Base
{
public IWebDriver Driver { get; set; }
}
}
...和鉤:
public class Hooks : Base
{
public Hooks()
{
Driver = new ChromeDriver(@"D:\Data\user\Documents\Visual Studio 2012\Projects\ParallelTests\ParallelTests\bin");
}
}
...和單個測試文件:
[TestFixture]
[Parallelizable]
public class ChromeTesting: Hooks
{
[Test]
public void ChromegGoogleTest()
{
Driver.Navigate().GoToUrl("https://www.google.co.uk");
Driver.FindElement(By.Id("lst-ib")).SendKeys("Deep Purple");
Driver.FindElement(By.Id("lst-ib")).SendKeys(Keys.Enter);
}
}
運行此工作正常,但如果我添加自定義方法,請說:
public class ExtensionMethods : Hooks
{
public void assertDisplayed()
{
Assert.IsTrue(Driver.FindElement(By.XPath("//*[contains(text(),'Some Text')]")).Displayed);
}
}
並調用在測試assertDisplayed()
如:
[TestFixture]
[Parallelizable]
public class ChromeTesting: Hooks
{
[Test]
public void ChromegGoogleTest()
{
Driver.Navigate().GoToUrl("https://www.google.co.uk");
Driver.FindElement(By.Id("lst-ib")).SendKeys("Deep Purple");
Driver.FindElement(By.Id("lst-ib")).SendKeys(Keys.Enter);
ExtensionMethods.assertDisplayed();
}
}
當我在上面所示的測試呼叫assertDisplayed()
它將啓動一個第二空白瀏覽器。任何幫助非常感謝。
現在的工作基礎上的建議,但下面是網頁對象模型,它再次啓動第二個瀏覽器窗口...
頁面文件的例子:
namespace ParallelTests
{
class PageObject_LoggedIn : Hooks
{
public PageObject_LoggedIn()
{
PageFactory.InitElements(Driver, this);
}
[FindsBy(How = How.XPath, Using = @"//*[contains(text(),'Deep Purple | Official Site')]")]
public IWebElement SearchText = null;
[FindsBy(How = How.Id, Using = "lst-ib")]
public IWebElement SearchBox = null;
public void Search()
{
SearchBox.SendKeys("Deep Purple");
SearchBox.SendKeys(Keys.Enter);
Driver.assertDisplayed2();
}
}
}
。 ..並呼籲測試... 測試代碼:
[TestFixture]
[Parallelizable]
public class ChromeTesting: Hooks
{
[Test]
public void ChromegGoogleTest()
{
PageObject_LoggedIn loggedIn = new PageObject_LoggedIn();
Driver.Navigate().GoToUrl("https://www.google.co.uk");
loggedIn.Search();
}
}
你是怎麼調用assertDisplayed方法的?我們可以看到代碼嗎? – CodingYoshi
對不起,我已經添加了這個,謝謝。 – alex
對不起,但代碼甚至不會編譯,因爲assertDisplayed不是一個靜態方法。 – CodingYoshi