1、selenium中hidden或者是display = none的元素定位到但是不可以操作怎么辦?
@FindBy(id = "bs3Select")
public WebElement 狀態;
查詢條件“狀態“是多選查詢,但是這個元素是隱藏的,即style="display: none;",可以獲取但是點不到
沒查到好用的方法,最終用的一種笨方法,就是用Java將元素改為可見,操作后還原不可見,關鍵代碼如下:
//將元素改為可見
String js1="document.getElementById(\"bs3Select\").style.display='';";
SFSeleniumCommon.執行js(js1);
//執行選擇操作
SFSeleniumCommon.選擇下拉列表記錄(employeeListPage.狀態, 狀態);
//將元素改為可見
String js2="document.getElementById(\"bs3Select\").style.display='none';";
SeleniumCommon.執行js(js2);
//后續的操作
employeeListPage.查詢按鈕.click();
2、cucumber中執行js
寫登出自動化腳本時遇到一個麻煩問題:鼠標移動到特定元素,就會自動出現下拉菜單,登出按鈕在這個下拉菜單里。那么使用任何代碼都無法模擬鼠標移動到指定元素,這時候,只能考慮指定元素出現下拉菜單時的格式變化。
這時候,通過瀏覽器頁面直接修改這個元素的class,就出現了登出下拉菜單,這時候只要click登出按鈕就可以了。另一方面的難點,就是查找這個特定元素時遇到了麻煩,因為沒有id,也沒有name,所以找不到,只能通過元素標簽來一級級找。整個過程花了2個小時,才搞定一行js代碼,代碼如下:
String logoutJs="var allPageTags=document.getElementsByTagName('li');for (i=0; i<allPageTags.length; i++)if (allPageTags[i].className=='dropdown dropdown-user') {allPageTags[i].setAttribute('class','dropdown dropdown-user open');}";
SeleniumCommon.執行js(logoutJs);
登出按鈕.click();