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.