Наложение заголовка Robotframework Selenium2Library на элемент, который нужно щелкнуть во время прокрутки страницы

Я использую Robotframework selenium2Library с базой Python и браузером Firefox для автоматизации нашего веб-приложения. Имея следующую проблему, когда когда-либо происходит событие Click,

Заголовок в веб-приложении неподвижен во время прокрутки страницы (т. Е. Всякий раз, когда происходит прокрутка страницы, заголовок всегда будет доступен для просмотра пользователем, прокручивается только содержимое), теперь проблема в том, что элемент, который должен быть нажат, недоступен на странице view, событие щелчка пытается прокрутить страницу, чтобы вывести элемент наверху веб-страницы, который находится точно под заголовком (перекрытие), и событие щелчка никогда не происходит, получая исключение ниже.

WebDriverException: Сообщение: элемент не активен в точке (1362.63330078125, 15.5). Другой элемент получит щелчок: https: //url/url/chat/chat.asp','popup','height=600, width = 680, scrollbars = no, resizable = yes, directories = no, menubar = no , status = no, toolbar = no ')); ">

Я пробовал подождать, пока страница не станет видимой, но это все равно не помогает, так как следующий оператор Click event (Click Element, Click Link и т. Д.) Снова прокручивается до заголовка.

Постоянное отображение заголовка - это функция нашего веб-приложения, и из-за того, что эти сценарии не работают, может ли кто-нибудь помочь решить эту проблему и сделать событие щелчка для успешного выполнения?


person Vidhya Lakshmi Shankarlal    schedule 18.10.2016    source источник
comment
что, если в целях отладки добавить Sleep 30s на вашу страницу перед выполнением самого Click? Также может помочь Capture Page Screenshot, если вы можете точно видеть, что находится на странице, когда тест не проходит.   -  person Richard Zilahi    schedule 18.10.2016
comment
Я попытался добавить засыпание перед Click, но в качестве следующего шага во время выполнения события Click страница прокручивается вверху (чуть ниже панели заголовка). Снимок экрана страницы захвата показывает, что элемент, на который нужно щелкнуть, скрыт заголовком.   -  person Vidhya Lakshmi Shankarlal    schedule 18.10.2016
comment
Тогда проблема найдена! если заголовок скрывает элемент, по которому вы хотите щелкнуть, другой элемент получает щелчок точно, как указано в проблеме. Сначала вам нужно решить проблему покрытия ...   -  person Richard Zilahi    schedule 19.10.2016
comment
Да, это проблема, которую я пытаюсь решить. Постоянная видимость заголовка - это функция нашего приложения. Есть ли способ решить эту проблему?   -  person Vidhya Lakshmi Shankarlal    schedule 21.10.2016


Ответы (3)


Итак, если я правильно понимаю, когда вы нажимаете элемент, страница прокручивается вниз ровно настолько, чтобы его было видно. Поскольку у вас прозрачный заголовок, элемент остается под ним и не может быть нажат. Моим решением было бы создать новое ключевое слово, которое будет прокручиваться вниз, пока элемент не станет видимым, а затем прокрутить еще немного вниз.

*** Settings ***
Library      Selenium2Library

*** Keywords ***
Scroll And Click
    [Arguments]           ${element}
    Execute Javascript    window.document.evaluate("//*[@id='${element}']", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.scrollIntoView(true);
    Execute Javascript    window.scrollBy(0, -200)
    Click Element         ${element}

*** Test Cases ***
Scrolltest
    Open Browser        http://www.stackoverflow.com/    gc
    Scroll And Click    hireme
person Pekka    schedule 21.10.2016

Если вы знаете, что элемент доступен для щелчка и все равно хотите щелкнуть, попробуйте использовать элемент «Щелкнуть элемент по координатам» со смещением 0,0. Он проигнорирует тот факт, что он закрыт, и просто щелкнет.

person MetaWhirledPeas    schedule 28.04.2020

Мы можем использовать Execute JavaScript, чтобы щелкнуть элемент. Я использую это в Python3.

${Element} = Get WebElement | xpath=//input[@id=image]
Execute JavaScript | arguments[0].click();  | ARGUMENTS  |  ${Element}

Ссылка на использование ID / xpath в качестве веб-локатора: Robot Framework: щелкните элемент, используя Execute JavaScript

person gvln5241    schedule 07.07.2021