Я пытаюсь создать каркас тестов пользовательского интерфейса WebDriver, используя шаблон объекта Page, используя следующий URL в качестве ссылки: http://www.peternewhook.com/2010/09/automated-testing-pageobjects-webdriver/
В соответствии с примером я создал 3 класса (см. Ниже).Проблема со строкой return PageFactory.InitElements(_driver, page);
в методе Search класса SearchPage.
При попытке собрать я получаю следующую ошибку:
Тип 'OpenQA.Selenium.ISearchContext' определяется в сборке, на которую нет ссылок.Вы должны добавить ссылку на сборку 'WebDriver
Достаточно справедливо, так как я ссылаюсь на WebDriver.Common.dll, поэтому я попытался удалить ее и добавил WebDriver.dll в свои ссылки, и внезапно яполучить следующее при сборке:
Невозможно неявно преобразовать тип 'void' в 'ConsoleApplication1.ResultsPage'
, и он завершается ошибкой на той же строке;при наведении на него указывается:
Невозможно преобразовать тип выражения 'void' в 'ConsoleApplication1.ResultsPage'.
Я также пытался ссылаться на обе сборки и думал, что яможно использовать по-разному, но это не работает, не работает.
Почему нельзя вернуть PageFactory.InitElements при использовании WebDriver.dll?
Есть ли способ обойти это?Или я могу добиться того же результата, слегка изменив архитектуру?
Ваша помощь очень ценится.Благодарю.
using OpenQA.Selenium;
namespace ConsoleApplication1
{
public class Page
{
public IWebDriver _driver;
public Page(IWebDriver driver)
{
this._driver = driver;
}
}
}
using OpenQA.Selenium;
namespace ConsoleApplication1
{
public class ResultsPage : Page
{
public ResultsPage(IWebDriver driver)
: base(driver)
{
}
private IWebElement count;
public string GetPagesReturned()
{
return count.Text;
}
}
}
using OpenQA.Selenium;
using OpenQA.Selenium.Support.PageObjects;
namespace ConsoleApplication1
{
public class SearchPage : Page
{
public SearchPage(IWebDriver driver) : base(driver)
{
}
private IWebElement q;
private IWebElement go;
public ResultsPage Search(string searchStatement)
{
q.SendKeys(searchStatement);
go.Click();
ResultsPage page = new ResultsPage(_driver);
return PageFactory.InitElements(_driver, page);
}
}
}