Нажмите кнопку Dynami c с Selenium (Pinterest / TailwindApp) - PullRequest
0 голосов
/ 14 апреля 2020

Я пытаюсь автоматизировать планирование закрепления элементов в Pinterest с помощью Tailwindapp.com. Я использую консольное приложение. NET (C#) с Selenium Chromedriver. Я запускаю браузер и включаю расширение попутного ветра и захожу под попутным ветром. Затем я go захожу на сайт, с которого пытаюсь закрепить изображения, попадаю на страницу продукта, ищу кнопку и пытаюсь нажать на нее. Вот где это разваливается. Кнопка «Расписание» в Tailwind появляется на всех изображениях на странице при наведении курсора . Когда я выполняю поиск XPath, он возвращает только одну кнопку для всей страницы (строка консоли ниже показывает 1).

public static void ClickScheduleButton(IWebDriver driver) {
        // get all the buttons and then use the first one
        IList<IWebElement> buttons = driver.FindElements(By.XPath("//*[@id='tw_schedule_btn']"));
        Console.WriteLine("Number of items found: " + buttons.Count());
        IWebElement scheduleButton = buttons.ElementAt(0);

        Actions actions = new Actions(driver);
        actions.MoveToElement(scheduleButton).Click().Perform();
    }

В методе execute я получаю следующую ошибку: OpenQA.Selenium. WebDriverException: 'javascript ошибка: не удалось выполнить' elementsFromPoint 'для' Document ': предоставленное двойное значение не является конечным.

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

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

Я предполагаю, что проблема заключается в том, чтобы заставить кнопку появляться на правильном изображении? Но это только предположение.

1 Ответ

0 голосов
/ 15 апреля 2020

Если я правильно понимаю, вы хотите нажать кнопку, которая появляется при наведении курсора мыши на изображение.

Если вы можете пылесосить мышь и подождать, пока появится ожидаемый xpath, это решит ее.

    protected virtual void HooverMouse(By element)
{
    Actions action = new Actions(driver);
    action.MoveToElement(driver.FindElement(element)).Build().Perform();
}

Элемент будет первым вашим изображением, поэтому вы должны изменить ваш driver.findelements ("кнопка") на "images" и l oop вокруг этого.

В псевдокоде будет:

Hoover (изображение) -> WaitButtonAppears -> ClickButton

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...