一、解決定位並操作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元素的點擊
