Я создаю платформу для тестирования, моя цель - проверить многие веб-сайты, которые имеют похожие страницы со слабой разницей между собой, используя эту структуру.Selenium Dynamic Selectors for WebElements
У меня проблема, когда я хочу, чтобы селектора WebElements были динамическими, что означает, что я хочу передать способ, которым я хочу найти этот элемент в качестве параметра метода FindElement.
Я пытаюсь построить что-то вроде этого:
public class WebComponent
{
public int ID { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public IWebElement WebElement{get;set;}
public Accessor Accessor { get; set; }
public WebComponent()
{
Accessor = new Accessor();
}
}
public class Accessor
{
OpenQA.Selenium.By By { get; set; }
public string Value { get; set; }
}
И позже в моем коде, когда я хочу, чтобы иметь экземпляр этого класса:
WebComponent component = new WebComponent();
component.ID = 1;
component.Name = "Logout Button";
component.Description = "The button to click when user wants to logout of website";
component.Accessor.By = By.Id;
component.Accessor.Value = "logout";
component.WebElement = Browser.Driver.FindElement(//missing code);
Мой вопрос, как я могу найти WebElement с использованием компонента.Accessor, любые советы или предлагаемые изменения будут высоко оценены.
но это wa y не позволит мне иметь метод динамического доступа, который может измениться между {Id, Name, ClassName и т. д.} –
@YahyaHHussein Почему бы и нет? вы можете сделать 'component.Accessor.By = By.Id (" logout ");' и line под 'component.Accessor.By = By.className (" someClass ");'. 'Теперь компонент.Accessor.By' является' By.className («someClass»); ' – Guy
Думайте, если я хочу, чтобы тестер выбрал метод доступа с помощью combobox. этот способ потребует, если условие для каждого метода доступа. –