1. 程式人生 > >Java+Selenium Web UI自動化測試的一些小總結

Java+Selenium Web UI自動化測試的一些小總結

The 隱藏 ase 默認 get over rip cli 不可

- Chrome

關於Chrome的配置網上信息很多,直說一點,當選擇在linux環境跑用例的時候,我們會優先選擇headless run,默認情況下headless run的瀏覽器大小好像只有900*768,我們在windows下調通的用例在縮小的串口下經常會失敗,最好調一下size:

chromeOptions.setHeadless(true);
chromeOptions.addArguments("--no-sandbox");
chromeOptions.addArguments("window-size=1280,900");

- Firefox,

a. Chrome下能夠跑過的用例在firefox下可能會fail,原因之一是Firefox對所有超出視窗的元素都是不可操作的,即使使用Action或者JS來操作也不可行,需要添加相應的ScrollIntoView (下面click會介紹具體用法)

b. Firefox對隱藏元素默認是不可操作的(例如上傳文件標簽),firefox 59之後添加了FirefoxCapability moz:wedriverClick用於操作隱藏元素: firefoxOptions.setCapability("moz:webdriverClick",false); //點擊隱藏元素,如上傳文件

2. 關於Click

- Element.click

driver.findElement(By.css).click(); //前提條件為element可見(visible)且高度長度大於0,如果元素點擊時發生變化則會拋出(StaleElementReferenceError

- Action.click

Actions action = new Actions(driver);
action.moveToElement(element).click().perform();//模擬鼠標操作,點擊元素中間位置

- Javascript scrollIntoView and click

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,可自行設置)

chromeOptions.setHeadless(true);

chromeOptions.addArguments("--no-sandbox");

chromeOptions.addArguments("window-size=1280,900");

○ Linux/Mac環境下運行chromedriver需要強制設置其為可執行文件

Filefile=newFile("chromedriver path");

file.setExecutable(true);

- Geckodriver

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();

  

後續慢慢添加

Java+Selenium Web UI自動化測試的一些小總結