Как упоминает ZloiAdun, в пространстве имен OpenQA.Selenium.Support.UI появился прекрасный новый класс Select. Это один из лучших способов получить доступ к элементу выбора и его параметрам, потому что API очень прост. Допустим, у вас есть веб-страница, которая выглядит примерно так
<!DOCTYPE html>
<head>
<title>Disposable Page</title>
</head>
<body >
<select id="select">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</select>
</body>
</html>
Ваш код для доступа к выбору будет выглядеть так. Обратите внимание, как я создаю объект Select, передавая в его конструктор обычный элемент IWebElement. У вас есть множество методов для объекта Select. Посмотрите в источнике для получения дополнительной информации, пока она не будет должным образом задокументирована.
using OpenQA.Selenium.Support.UI;
using OpenQA.Selenium;
using System.Collections.Generic;
using OpenQA.Selenium.IE;
namespace Selenium2
{
class SelectExample
{
public static void Main(string[] args)
{
IWebDriver driver = new InternetExplorerDriver();
driver.Navigate().GoToUrl("www.example.com");
//note how here's i'm passing in a normal IWebElement to the Select
// constructor
Select select = new Select(driver.FindElement(By.Id("select")));
IList<IWebElement> options = select.GetOptions();
foreach (IWebElement option in options)
{
System.Console.WriteLine(option.Text);
}
select.SelectByValue("audi");
//This is only here so you have time to read the output and
System.Console.ReadLine();
driver.Quit();
}
}
}
Однако следует отметить пару вещей о классе поддержки. Даже если вы загрузили последнюю бета-версию, вспомогательной DLL там не будет. Пакет поддержки имеет относительно долгую историю в библиотеках Java (именно там живет PageObject), но он все еще довольно свеж в драйвере .Net. К счастью, его действительно легко собрать из исходного кода. Я вытащил из SVN, затем сослался на WebDriver.Common.dll из загрузки бета-версии и построен в C# Express 2008. Этот класс не был так хорошо протестирован, как некоторые другие классы, но мой пример работал в Internet Explorer и Firefox.
Есть несколько других вещей, на которые я должен указать, основываясь на вашем коде выше. Во-первых, строка, которую вы использовали для поиска элемента выбора
driver.FindElements(By.TagName("select"));
собирается найти все выбранные элементы. вам, вероятно, следует использовать driver.FindElement
без 's'.
Кроме того, очень редко вы будете использовать INavigation напрямую. Вы будете делать большую часть своей навигации, как driver.Navigate().GoToUrl("http://example.com");
Наконец, DefaultSelenium
— это способ доступа к старому API Selenium 1.x. Selenium 2 — довольно значительное отличие от Selenium 1, поэтому, если вы не пытаетесь перенести старые тесты на новый API Selenium 2 (часто называемый API WebDriver), вы не будете использовать DefaultSelenium.
person
pnewhook
schedule
11.01.2011