В конечном итоге вам нужно извлечь информацию, записанную в тесте, в повторно используемый компонент.
- Запишите свои тесты в Firefox с помощью плагина Selenium IDE.
- Экспорт записанного теста в файл .cs (при условии .NET, как вы упомянули White, но также доступны параметры экспорта Ruby)
- Извлечение идентификаторов XPath / CSS, их инкапсуляция в повторно используемые классы и использование Шаблон PageObject для представления каждой страницы.
Используя вышеописанную технику, вам нужно всего лишь обновить PageObject с обновленными локаторами вместо перезаписи ваших тестов.
Обновление:
Вы хотите автоматизировать часть записи?Звучит неловко.Может быть, вы хотите извлечь все гиперссылки с определенной страницы и выполнить с ними одно и то же действие?
Вам следует использовать объектную модель Selenium для сценариев против DOM.
[Test]
public void GetAllHyperLinks()
{
IWebDriver driver = new FireFoxDriver();
driver.Navigate().GoToUrl("http://youwebsite");
ReadOnlyCollection<IWebElement> query
= driver.FindElements( By.XPath("//yourxpath") );
// iterate through collection and access whatever you want
// save it to a file, update a database, etc...
}
Обновление 2:
Хорошо, теперь я понимаю ваши проблемы.Вы хотите получить локаторы с веб-страницы для дальнейшего использования.Задача заключается в создании локатора!
При создании локаторов будут некоторые проблемы, особенно если их несколько, но вы должны быть в состоянии продвинуться достаточно далеко, используя локаторы на основе CSS, которые Seleniumsupport.
Например, вы можете найти все гиперссылки, используя xpath "// a", а затем использовать Selenium для создания локатора CSS.Возможно, вам придется настроить локатор в соответствии с вашими потребностями, но в качестве примера локатор может использовать класс css и текстовое значение гиперссылки.
//a[contains(@class,'adminLink')][.='Edit']
// selenium 2.0 syntax
[Test]
public void GetAllHyperLinks()
{
IWebDriver driver = new FireFoxDriver();
driver.Navigate().GoToUrl("http://youwebsite");
ReadOnlyCollection<IWebElement> query
= driver.FindElements( By.XPath("//a") );
foreach(IWebElement hyperLink in query)
{
string locatorFormat = "//a[contains(@class,'{0}')][.='{1}']";
string locator = String.Format(locatorFormat,
hyperlink.GetAttribute("class"),
hyperlink.Value);
// spit out the locator for reference.
}
}
Вам все еще нужно будет связать локатор сваш файл кода, но это, по крайней мере, должно помочь вам начать с извлечения локаторов для будущего использования.
Вот пример сканирования ссылок с использованием Selenium 1.0 http://devio.wordpress.com/2008/10/24/crawling-all-links-with-selenium-and-nunit/