差異處
這裏顯示兩個版本的差異處。
下次修改 | 前次修改 | ||
rf:rf:ctl_scrollbar_of_div [2018/12/07 17:05] tony 建立 |
rf:rf:ctl_scrollbar_of_div [2023/06/25 09:48] (目前版本) |
||
---|---|---|---|
行 1: | 行 1: | ||
+ | {{tag>RobotFramework}} | ||
====== RobotFramework: 如何控制div上的scrollbar? ====== | ====== RobotFramework: 如何控制div上的scrollbar? ====== | ||
===== Problem ===== | ===== Problem ===== | ||
+ | 在使用grid呈現大量資料時,很有可能會發生畫面的長度無法呈現出所有內容;因此在div的style中,會搭配overflow: auto讓長度不足時顯示出scrollbar,如下:\\ | ||
+ | {{:rf:rf:rf_panel_with_scroll_bar.png|}}\\ | ||
+ | \\ | ||
+ | 而我在使用Get Text去取得如畫面較右方(index大概第10個)的內容時,都會找不到對應的element;使用Get Source或Get Element Count也都拿不到如預期的資料與數量。經過測試,發現只要將scrollbar往右移就可以解決我們的問題。本篇文章要分享給大家控制div scrollbar的方法。 | ||
+ | ===== How to resolve? ===== | ||
+ | 我們主要的解決方式是透過Execute Javascript去控制div中的scrollbar,會使用到DOM element的兩個屬性: | ||
+ | * Element.scrollLeft: 控制橫向scrollbar位置。 | ||
+ | * Element.scrollTop: 控制垂直scrollbar位置。 | ||
+ | 假設我們要針對class為viewport element的橫向scrollbar做操作,會這樣寫: | ||
+ | <code bash> | ||
+ | Execute Javascript | document.getElementByClassName('viewport')[1].scrollLeft = 500 | ||
+ | </code> | ||
+ | 如果要對id為grid的垂直scrollbar做操作,會這樣寫: | ||
+ | <code bash> | ||
+ | Execute Javascript | document.getElementById('grid').scrollTop = 500 | ||
+ | </code> | ||
+ | 在寫之前,可以先嘗試使用瀏覽器的debug console實驗一下。 | ||
+ | ===== Reference ===== | ||
+ | * [[https://blog.csdn.net/huilan_same/article/details/52131277|selenium之 如何控制网页内嵌div中滚动条的滚动]] | ||
+ | * [[https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollLeft|Element.scrollLeft]] | ||
- | ===== How to? ===== | + | ===== ===== |
- | + | ---- | |
- | + | \\ | |
- | + | ~~DISQUS~~ |