Как правильно обратиться к элементам на странице 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;
    }
}

Я не понимаю как мне правильно реализовать ожидание этих элементов, либо же нужен вообще другой подход к взаимодействию с этим чекбоксами.


Ответы (0 шт):