運用js解決java selenium元素定位問題


一、解決定位並操作uneditable元素

嘗試了通過id,xpath等等定位元素后點擊都提示Element is not clickable at point

再看了下可以click的元素發現上面有onClick事件

查看了一下元素是span

幾番操作都不行,最后還是請教的大神,通過js腳本來操作

其實瀏覽器中可以F12,然后同等的輸入js腳本,點擊Enter,發現頁面會有函數對應的頁面操作

將js腳本同等移動到java中

$("[data-date='2016-10-26']").mousedown()發現通過上面的js腳本可以模擬到在uneditable元素上面進行點擊操作

((JavascriptExecutor) driver).executeScript("$(\"[data-date='2016-10-26']\").mousedown()");

如果這句看不懂的可以去補一下jQuery的知識點,我也是查閱jQuery才看懂的

二、順帶介紹一下js操作滾動條

 String high = "scroll(0,1000)";
         ((JavascriptExecutor) driver).executeScript(high);

當然上面的這種寫法有點多次一舉,完全可以放在一句里面執行

((JavascriptExecutor) driver).executeScript("window.scroll(0,1000");

當然更加智能一點的方法是

((JavascriptExecutor) driver).executeScript("window.scroll(0,document.body.scrollHeight)");

((JavascriptExecutor) driver).executeScript("在此放入你的js腳本");

還有更加活用的直接根據頁面元素的位置來移動瀏覽器的滾動條

比如移動某元素的頂部與瀏覽器齊平

((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView();", element);

移動某元素的底部與瀏覽器齊平

((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(false);", element);

js腳本會有$符號,記得帶上“”將$涵蓋,同時對於腳本語句里面有"的,要帶上轉義

由此得知,js腳本還是很強大的

三、有的時候你遇到的js前端代碼真的特別無語

比如對於這種<a class=button search_button set_button btn btn-green>Test</a>

里面有很多空格而且這個元素也沒有對應的js響應事件

這個時候就需要補充一下js前端知識

告訴一個巧的方法,關於如何找到這個元素上面的觸發事件

a元素里面有文本Test,可以在對應js里面搜索到文本Test所在的位置,然后查閱一下js上下文,結合js+jQuery的知識,你就可以找到包裹的觸發事件了

比如我找到的是這種

$(".set_button", infoElement).click(function(){。。。}

很顯然可以通過$(".set_button").cick()來模擬a元素的點擊

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM