Прошу прощения, если этот вопрос несколько двусмысленный.Я заметил, что элементы Geb не будут прокручиваться в поле зрения, если указанный элемент находится за пределами страницы и должен быть прокручен с использованием "внутренней" полосы прокрутки
с помощью "внутренней" полосы прокрутки, на которую я ссылаюсьполосы прокрутки, которые вложены в данную веб-страницу и отделены от полосы прокрутки глобальной веб-страницы.
Когда я пытаюсь получить элемент, находящийся за пределами страницы из-за этой внутренней полосы прокрутки, geb возвращает нулевой объект (gebне удалось найти элемент на странице)
Я сделал несколько различных хаков, которые вручную прокручивали эти внутренние полосы прокрутки, но мне было интересно, предоставил ли Geb какую-либо функциональность для обработки этих вложенных полос прокрутки.
Вот фрагмент кода, показывающий, как я обрабатываю поиск данной строки:
class TabledModule extends Module {
static content = {
headers {$(By.xpath("//lane-group-header"))}
table {$(By.xpath("//div[@class=',y-class']"))}
}
Navigator getAllRows(){
return table.children()
}
Navigator getRow(String text){
return table.children().find{it.text().contains(text)}
}
Navigator getRow(int index){
return table.children()[index]
}
}
из моего сценария:
getAllRows() //returns 50 which it should (only 20 are displayed)
def row = getRow(45) //returns a navigator as it should
row.click() //successfully clicks the correct row
def row2 = getRow("someString") //returns null when the row is off the page this is the problem and I'm wondering now if it is a bug, since getting the row by index seems to work fine.
Для этого модуля только около 20 из 50 строкпоказано, чтобы показать другие строки, вам нужно прокрутить вложенную полосу прокрутки, чтобы добраться до них.строка, к которой я хочу получить доступ, находится ниже в списке, поэтому для ее доступа требуется прокрутка.
Интересно то, что getAllRows().size()
возвращает правильное количество строк: 50, но когда я вызываю getRow
длястрока, находящаяся вне страницы, возвращает ноль.Если та же строка находится в верхней части списка, это работает.он только возвращает ноль, если его нужно прокрутить до.