2016-07-28 3 views
0

Я пытаюсь переместить полосу прокрутки вправо, используя selenium webdriver в java, чтобы сфокусироваться на элементе, чтобы получить скриншот, но после попытки узнать все, что я знаю, я не могу его получить.Selenium Java Scroll Bar в разделе

Сценарий показан на рисунке 1: sorry for deleting data due to privacy issues

Как вы можете видеть, прокрутка находятся в элемент в синем прямоугольнике,

Я попытался это один:

 JavascriptExecutor js; 
    js = (JavascriptExecutor) driver; 
    js.executeScript("$(\"#Pagination\").animate({ scrollLeft: \"-50000px\" })"); 

Pagination is div id.

Помогите мне, ребята?

С наилучшими пожеланиями.

+0

Итак, Java или JavaScript? – Pavlo

+0

@Pavlo Both- WebDriver на Java, в котором может выполняться javascript. Да, там должен быть добавлен правильный тег. – Edgar

ответ

2

Используйте «OpenQA.Selenium.Interactions.Actions» для перехода к элементу. Он должен автоматически получить позицию элемента x, y и прокрутить к ней.

// Initialize instance 
Actions action = new Actions(webdriver); 

// Find element to focus inside iframe 
WebElement we = webdriver.findElement("<find element you wish to focus>"); 

// Perform move action 
action.moveToElement(we).build().perform(); 

Не испытал, надеюсь, это поможет.

UPDATE:

У вас есть две очень похожие идентификаторы - "#Pagina т ион" и "#Pagina гр ионов". Это действительно сбивает с толку.
Кроме того, вам следует рассмотреть вопрос о добавлении класса в строки, где у вас есть данные, например data-row.

Примечание: Убедитесь, что вы правильно нашли элемент. Когда вы показываете данные таблицы, этот элемент будет ячейкой таблицы, а не самой таблицей.

1) В Java коде вы сохраняете скрипт в строковую переменную:

String script = "return $('#Paginacion').find('.data-row').eq(%1$d - 1).find('td').eq(%2$d - 1)"; 

2) Тогда легко пройти rowNumber и columnNumber к executeScript метода.
        Примечание: Должны быть добавлены также нулевые проверки.

int rowNumber = 1; 
int columnNumber = 19; 

List<WebElement> webElements = (List<WebElement>)js.executeScript(String.format(script, rowNumber, columnNumber)); 

3) Когда элемент найден, просто вызовите метод moveToElement

action.moveToElement((WebElement) webElements.get(0)).build().perform(); 

Испытано и она работает.

+0

Благодарим вас за ответ, но он не работает, поскольку полоса прокрутки не перемещается из начальной позиции. Кажется, что таблица со свитком уже видна, поэтому фокусировка на ней не перемещает полосу прокрутки. Любой другой вариант, парни? Спасибо. – DPSeen

+0

@ user6648978 Не могли бы вы создать небольшой образец html в [jsfiddle] (https://jsfiddle.net/) похожим, как это делается в вашем проекте? – Edgar

+0

Здесь вы находитесь. https://jsfiddle.net/51463j0g/ Предположим, я хочу переместить прокрутку, пока на экране не появится элемент под номером 19 в таблице. – DPSeen

Смежные вопросы