scroll watir

scroll - cómo desplazar una aplicación web en watir



(5)

si el elemento está en la parte inferior de la página, cargará más contenido:

browser.element.wd.location_once_scrolled_into_view

¿Cómo desplazo una aplicación web en Watir?

He intentado @browser.send_keys :space

Esto simplemente baja toda la página. Pero tengo un desplazamiento dentro de la aplicación, necesito desplazar hacia abajo y hacia abajo la barra de desplazamiento vertical en mis pruebas de automatización. ¡Por favor, ayúdenme!

¡Gracias!

<div dojoattachpoint="containerNode" class="containerNode tabContentPane typeNavigationSingleChild" style="overflow: auto; left: 5px; top: 10px; width: 1549px; height: 535px;"> <div pageid="lifecycle_theme_home_page_dashboard_pageId" id="lifecycle_theme_home_page_dashboard_pageId" style="height: 535px; padding: 0px; width: 1549px;" widgetid="lifecycle_theme_home_page_dashboard_pageId" title="" role="group" class="dijitContentPane wcs-nullLayout">


Usando Watir-Classic, el segundo método que proporcionó Justin Ko funciona muy bien para iterar a través de una sección desplazable para encontrar algo específico. Aquí hay un ejemplo de eso:

div_with_scroll = browser.div(:class => ''containerNode tabContentPane typeNavigationSingleChild'') scroll_value = 50 # change this number to match how much you want to scroll each iteration max_loop = div_with_scroll.document.scrollHeight / scroll_value if div_with_scroll.document.scrollHeight % scroll_value > 0 # accounts for any remainder height max_loop = max_loop + 1 end for i in 0..max_loop do div_with_scroll.document.scrollTop = i * scroll_value # moves the scrollbar if div_with_scroll.text.include? ''Search Text'' puts ''Search Text found in iteration: '' + i.to_s() break # exits the loop when found end end

Puede haber una manera más eficiente de hacer lo que estoy haciendo aquí, pero entiendes la idea.


Solución 1) Desplácese hasta el último elemento

Creo que el enfoque de Vinay debería funcionar. Sin embargo, en la forma actual, asume que el elemento ya existe en la página. Supongo que el elemento que desea solo es visible una vez que se desplaza lo suficiente. Entonces, lo que puedes hacer es desplazarte al último elemento en el div.

Watir-Webdriver

En Watir-Webdriver:

div_with_scroll = browser.div(:class => ''containerNode tabContentPane typeNavigationSingleChild'') div_with_scroll.elements.last.wd.location_once_scrolled_into_view

Watir-Classic

En Watir-Classic, es diferente ya que no usa selenium-webdriver:

div_with_scroll = browser.div(:class => ''containerNode tabContentPane typeNavigationSingleChild'') div_with_scroll.elements.last.document.scrollIntoView

Solución 2) Usar la propiedad ScrollTop

Como alternativa, si lo anterior no funciona, puede establecer la propiedad scrollTop para mover la barra de desplazamiento del elemento div. Esto funcionó para una aplicación en la que estaba trabajando que tenía contenido que solo se cargaba una vez que se desplazaba hacia abajo.

Watir-Webdriver

Para saltar la barra de desplazamiento hacia la parte inferior, que en teoría debería activar el contenido a continuación para cargar, establezca la propiedad scrollTop en el scrollHeight :

div_with_scroll = browser.div(:class => ''containerNode tabContentPane typeNavigationSingleChild'') scroll_bottom_script = ''arguments[0].scrollTop = arguments[0].scrollHeight'' div_with_scroll.browser.execute_script(scroll_bottom_script, div_with_scroll)

Para volver a la parte superior, configure scrollTop en cero.

div_with_scroll = browser.div(:class => ''containerNode tabContentPane typeNavigationSingleChild'') scroll_top_script = ''arguments[0].scrollTop = 0'' div_with_scroll.browser.execute_script(scroll_top_script, div_with_scroll)

También puede usar cualquier valor intermedio dependiendo de a dónde necesite ir.

Watir-Classic

En Watir-Classic, puede configurar scrollHeight más directamente:

div_with_scroll = browser.div(:class => ''containerNode tabContentPane typeNavigationSingleChild'') #Go to bottom div_with_scroll.document.scrollTop = div_with_scroll.document.scrollHeight #Go to top div_with_scroll.document.scrollTop = 0


Use Javascript (por ejemplo, al final de la página):

browser.execute_script("window.scrollTo(0, document.body.scrollHeight);/n")


use un ejecutor de JavaScript correcto para lograr este resultado: a continuación he escrito un código para mostrarle la mejor y más confiable forma de lograr esto en mi opinión:

PIE DE PÁGINA:

((IJavaScriptExecutor)webapplication).ExecuteScript("window.scrollTo(0, document.body.scrollHeight - 5)");

PARTE SUPERIOR DE LA PÁGINA:

((IJavaScriptExecutor)webapplication).ExecuteScript("window.scrollTo(0, document.body.scrollHeight 0)");

también puede establecer diferentes valores para desplazarse a diferentes alturas; por ejemplo, el código de desplazamiento hacia abajo que he establecido en 5px desde la parte inferior de la página. buena suerte, espero que esto sea de alguna utilidad para ti.