Как автоматически нажать на ссылку с xpath - PullRequest
0 голосов
/ 01 января 2019

Я ищу способ автоматического нажатия кнопки или ссылки при загрузке страницы.В настоящее время метод Xpath кажется мне хорошим вариантом.Я попробовал:

document.evaluate('/html/body/div/div[4]/div[2]/form/p/input', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.click();

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

enter image description here enter image description here

1 Ответ

0 голосов
/ 01 января 2019

Если вы проверите значение вашего singleNodeValue, вы заметите, что оно равно null .Это связано с тем, что ваш XPath неверен.

Правильный полный XPath: /html/body/div[2]/div[4]/div[2]/form/fieldset/p[4]/input

Однако в будущем этот путь, скорее всего, будет нарушен, поскольку он опирается на <div>s и <p> s должны быть расположены в определенных положениях.Вы можете сделать более «расслабленный» XPath, который все равно найдет нужный элемент.На самом деле, вы можете легко сделать это в Google Chrome, щелкнув правой кнопкой мыши по кнопке, нажмите «Проверить», а затем щелкните правой кнопкой мыши элемент DOM и выберите «Копировать Xpath».

Полученный код будет:

document.evaluate('//*[@id="tool-submit-button"]/input', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.click();

Если вы хотите использовать его при загрузке страницы, сначала проверьте, не было ли видео уже конвертировано.Вам также может понадобиться дождаться загрузки кнопки:

var checkTimer = setInterval(function() {
    var button = document.evaluate('//*[@id="tool-submit-button"]/input', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
    if (button) {
        clearInterval(checkTimer);

        // Only convert if the gif hasn't already been converted
        if (!document.getElementsByTagName("video")[0])
            button.click();
    }
}, 50);
...