Как правильно обратиться к элементам на странице Steam через Selenium?
Только начал изучать Selenium
и не могу понять как правильно обратиться именно к этим элементам на странице Steam
.
Имеется страница Steam
: https://store.steampowered.com/search/?supportedlang=english&filter=topsellers&ndl=1
Имеется базовый класс:
internal class BasePage
{
protected WebDriver driver;
private WebDriverWait wait;
public BasePage()
{
this.driver = SingletonDriver.Instance;
this.wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
}
protected IWebElement WaitForElementToBeVisible(By locator)
{
return wait.Until(c => c.FindElement(locator));
}
protected void Click(By locator)
{
WaitForElementToBeVisible(locator).Click();
}
}
Я пытаюсь нажать на чекбоксы в правой панели:
internal class SearchTopSellersPage : BasePage
{
private By BoxNumberPlayers = By.XPath("//input[@id='category3']");
private By numberPlayers = By.XPath("//*[@data-collapse-name='category3']");
private By LANCoop = By.XPath("//div[@data-loc='LAN Co-op']");
public SearchTopSellersPage(WebDriver webDriver) : base() { }
public void SetCheckBoxNumberPlayers()
{
if (!WaitForElementToBeVisible(BoxNumberPlayers).Displayed)
{
Click(numberPlayers);
}
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
var element = driver.FindElement(LANCoop);
// wait.Until(d => element.Displayed); Вызывает ошибку: javascript error: this.each is not a function
// wait.Until(d => element.Enabled); Вызывает ошибку: element not interactable
// Thread.Sleep(500); Не вызывает ошибку и тест проходит
Click(LANCoop);
return;
}
}
Я не понимаю как мне правильно реализовать ожидание этих элементов, либо же нужен вообще другой подход к взаимодействию с этим чекбоксами.