1. Browser
Chrome
關於Chrome的配置網上信息不少,直說一點,當選擇在linux環境跑用例的時候,咱們會優先選擇headless run,默認狀況下headless run的瀏覽器大小好像只有900*768,咱們在windows下調通的用例在縮小的串口下常常會失敗,最好調一下size:css
chromeOptions.setHeadless(true); chromeOptions.addArguments("--no-sandbox"); chromeOptions.addArguments("window-size=1280,900");
Firefox
a. Chrome下可以跑過的用例在firefox下可能會fail,緣由之一是Firefox對全部超出視窗的元素都是不可操做的,即便使用Action或者JS來操做也不可行,須要添加相應的ScrollIntoView (下面click會介紹具體用法)java
b. Firefox對隱藏元素默認是不可操做的(例如上傳文件標籤),firefox 59以後添加了FirefoxCapability moz:wedriverClick用於操做隱藏元素: firefoxOptions.setCapability("moz:webdriverClick",false); //點擊隱藏元素,如上傳文件linux
2. 關於Click
- Element.clickweb
driver.findElement(By.css).click(); //前提條件爲element可見(visible)且高度長度大於0,若是元素點擊時發生變化則會拋出(StaleElementReferenceError
- Action.clickchrome
Actions action = new Actions(driver); action.moveToElement(element).click().perform();//模擬鼠標操做,點擊元素中間位置
- Javascript scrollIntoView and clickwindows
JavascriptExecutorje=(JavascriptExecutor)getWebDriver(); je.executeScript("arguments[0].scrollIntoView(false);",element);//移動到元素element對象的「底端」與當前窗口的「底部」對齊,//true爲頂端 je.executeScript("arguments[0].click();",element);//經過JS點擊元素,可繞開元素被圖層覆蓋或透明沒有正面大小問題
3. Driver
- Chromedriver:瀏覽器
○ Headless mode: (Chrome headless模式時不使用Xvfb,Xvfb爲早期沒有chrome headless模式時的替代X window服務, headless默認窗口大小爲900x768,可自行設置)less
chromeOptions.setHeadless(true); chromeOptions.addArguments("--no-sandbox"); chromeOptions.addArguments("window-size=1280,900");
○ Linux/Mac環境下運行chromedriver須要強制設置其爲可執行文件spa
Filefile=newFile("chromedriver path"); file.setExecutable(true);
- Geckodriverfirefox
ProfilesIniprofile=newProfilesIni(); FirefoxProfileffProfile=profile.getProfile("default"); capabilities.setCapability(FirefoxDriver.PROFILE,ffProfile); //關於證書認證等的設置 FirefoxOptionsfirefoxOptions=newFirefoxOptions(capabilities); firefoxOptions.setCapability("moz:webdriverClick",false);//容許點擊隱藏元素,如上傳文件 webdriver=newFirefoxDriver(firefoxOptions);
4. Hover
- Hover and click
Actionsaction=newActions(getWebDriver()); action.moveToElement(element).perform(); Element.click();//若是出現點擊不了的問題,可嘗試更改moveToElement到父節點,點擊子element
- Hover and hold
Actionsaction=newActions(getWebDriver()); action.moveToElement(element).clickAndHold().perform();//側面解決hover元素後在作其餘操做hover元素隱藏問題 action.release();
後續慢慢添加