├── .github └── workflows │ └── greetings.yml ├── 10_GmailBot └── EmailBot.java ├── 11_Amazon_TestNG └── SequenceTester.java ├── 12_ExcelRead ├── Generic.java └── ReadExcel.java ├── 13_DataProviders ├── DataProviders.java └── ProviderInput.java ├── 1_ChromeDriverInstallation ├── ChromeTC.java ├── README.md └── Software │ ├── Selenium Java 3.14 │ ├── CHANGELOG │ ├── LICENSE │ ├── NOTICE │ ├── client-combined-3.141.59-sources.jar │ ├── client-combined-3.141.59.jar │ └── libs │ │ ├── byte-buddy-1.8.15.jar │ │ ├── commons-exec-1.3.jar │ │ ├── guava-25.0-jre.jar │ │ ├── okhttp-3.11.0.jar │ │ └── okio-1.14.0.jar │ └── chromedriver.exe ├── 2_GeckoDriverInstallation ├── GeckoDriver.java ├── README.md └── Software │ └── geckodriver.exe ├── 3_Amazon_Test_Cases ├── README.md ├── TestSuite.xlsx └── img │ ├── Homepage.png │ ├── Login.png │ ├── Main.png │ ├── Registration.png │ ├── Search.png │ ├── Verify (1).png │ └── Verify (2).png ├── 4_Amazon ├── Login.java ├── Register.java ├── Search.java ├── Search_Assertions.java └── img │ ├── AmazonLogin (1).png │ ├── AmazonLogin (2).png │ └── AmazonLogin (3).png ├── 5_Selenium_Server_Standalone └── ChromeTC.java ├── 6_GitHub_Login └── Login.java ├── 7_Personal_Assistant ├── NoiceCurse.java └── README.md ├── 8_IEDriverServer ├── IEConnection.java ├── README.md └── Softwares │ ├── IEDriverServer.exe │ └── selenium-server-standalone-2.48.0.jar ├── 9_TestNG_Framework ├── README.md └── SequenceTester.java ├── CONTRIBUTING.md ├── LICENSE ├── README.md └── _config.yml /.github/workflows/greetings.yml: -------------------------------------------------------------------------------- 1 | name: Greetings 2 | 3 | on: [pull_request, issues] 4 | 5 | jobs: 6 | greeting: 7 | runs-on: ubuntu-latest 8 | steps: 9 | - uses: actions/first-interaction@v1 10 | with: 11 | repo-token: ${{ secrets.GITHUB_TOKEN }} 12 | issue-message: 'Thanks alot for raising an issue in this repository :+1: We will soon give a follow up.' 13 | pr-message: 'Appreciate your contribution :+1: We will be shortly review it' 14 | -------------------------------------------------------------------------------- /10_GmailBot/EmailBot.java: -------------------------------------------------------------------------------- 1 | package gmail; 2 | 3 | import org.openqa.selenium.By; 4 | import org.openqa.selenium.WebDriver; 5 | import org.openqa.selenium.WebElement; 6 | import org.openqa.selenium.chrome.ChromeDriver; 7 | 8 | public class EmailBot 9 | { 10 | public static void main(String[] args) 11 | { 12 | System.setProperty("webdriver.chrome.driver", "D:\\UPES DevOps\\DevOps Sem 6\\Test Automation\\Softwares\\chromedriver.exe"); 13 | WebDriver driver=new ChromeDriver(); 14 | driver.navigate().to("https://accounts.google.com/signin"); 15 | driver.manage().window().maximize(); 16 | WebElement element; 17 | 18 | //Login 19 | element = driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[2]/div/div[2]/div/div/div[2]/div/div[1]/div/form/span/section/div/div/div[1]/div/div[1]/div/div[1]/input")); 20 | element.sendKeys("<>"); 21 | driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[2]/div/div[2]/div/div/div[2]/div/div[2]/div/div[1]/div/span/span")).click(); 22 | 23 | //Check the URL!!! Is on login page or password page??? 24 | System.out.println(driver.getCurrentUrl()); //Yes, it is stuck on the login page not on the password page because the web page does not change, it is forwarded!! 25 | 26 | /* 27 | //Cannot access Password by id, name or even by the xpath :( 28 | //element = driver.findElement(By.name("password")); 29 | 30 | element = driver.findElement(By.xpath("//*[@id=\"password\"]/div[1]/div/div[1]/input")); 31 | element.sendKeys("<>"); 32 | //driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[2]/div/div[2]/div/div/div[2]/div/div[2]/div/div[1]/div/span/span")).click(); 33 | 34 | element = driver.findElement(By.id("ap_password")); 35 | element.sendKeys("<>"); 36 | driver.findElement(By.id("signInSubmit")).click(); 37 | */ 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /11_Amazon_TestNG/SequenceTester.java: -------------------------------------------------------------------------------- 1 | import java.util.ArrayList; 2 | import org.junit.AfterClass; 3 | import org.junit.BeforeClass; 4 | import org.openqa.selenium.By; 5 | import org.openqa.selenium.WebDriver; 6 | import org.openqa.selenium.WebElement; 7 | import org.openqa.selenium.chrome.ChromeDriver; 8 | import org.testng.Assert; 9 | import org.testng.annotations.AfterMethod; 10 | import org.testng.annotations.AfterSuite; 11 | import org.testng.annotations.BeforeMethod; 12 | import org.testng.annotations.BeforeSuite; 13 | import org.testng.annotations.Test; 14 | 15 | public class SequenceTester 16 | { 17 | public static String str; 18 | public static WebDriver driver; 19 | public static WebElement element; 20 | 21 | @BeforeSuite 22 | public void initialization() 23 | { 24 | System.setProperty("webdriver.chrome.driver", "D:\\UPES DevOps\\DevOps Sem 6\\Test Automation\\Softwares\\chromedriver.exe"); 25 | driver = new ChromeDriver(); 26 | } 27 | @BeforeClass 28 | public void register() 29 | { 30 | driver.get("https://amazon.in"); 31 | driver.findElement(By.id("nav-hamburger-menu")).click(); 32 | driver.findElement(By.xpath("//*[@id=\"hmenu-content\"]/ul[18]/li[26]/a")).click(); 33 | driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[2]/div/div[2]/div/span/span/a")).click(); 34 | element = driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[2]/div/div[2]/div/form/div/div/div[1]/input")); 35 | element.sendKeys("Raj Khare"); 36 | element = driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[2]/div/div[2]/div/form/div/div/div[2]/div/div/div/div[2]/input")); 37 | element.sendKeys("7302200208"); 38 | element = driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[2]/div/div[2]/div/form/div/div/div[3]/div/input")); 39 | element.sendKeys("500060720@stu.upes.ac.in"); 40 | element = driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[2]/div/div[2]/div/form/div/div/div[4]/div/input")); 41 | element.sendKeys("nish123!@#"); 42 | driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[2]/div/div[2]/div/form/div/div/div[6]/span/span/input")).click(); 43 | driver.manage().window().maximize(); 44 | } 45 | @BeforeMethod 46 | public void Login() 47 | { 48 | driver.navigate().to("https://www.amazon.in/"); 49 | driver.manage().window().maximize(); 50 | driver.findElement(By.id("nav-signin-tooltip")).click(); 51 | element = driver.findElement(By.id("ap_email")); 52 | element.sendKeys("<>"); 53 | driver.findElement(By.id("continue")).click(); 54 | element = driver.findElement(By.id("ap_password")); 55 | element.sendKeys("<>"); 56 | driver.findElement(By.id("signInSubmit")).click(); 57 | } 58 | @Test 59 | public static void search() 60 | { 61 | driver.get("https://www.amazon.in/"); 62 | element = driver.findElement(By.xpath("/html/body/div[1]/header/div/div[1]/div[3]/div/form/div[3]/div[1]/input")); 63 | element.sendKeys("Lenovo legion y540"); 64 | element.findElement(By.xpath("/html/body/div[1]/header/div/div[1]/div[3]/div/form/div[2]/div/input")).click(); 65 | driver.manage().window().maximize(); 66 | str = driver.findElement(By.xpath("//*[@id=\"search\"]/div[1]/div[2]/div/span[4]/div[1]/div[1]/div/span/div/div/div/div/div[2]/div[2]/div/div[1]/div/div/div[1]/h2/a/span")).getText(); 67 | Assert.assertTrue(str.contains("Lenovo Legion Y540")); 68 | driver.findElement(By.xpath("//*[@id=\"search\"]/div[1]/div[2]/div/span[4]/div[1]/div[1]/div/span/div/div/div/div/div[2]/div[2]/div/div[1]/div/div/div[1]/h2/a/span")).click(); 69 | ArrayList tabs2 = new ArrayList (driver.getWindowHandles()); 70 | driver.switchTo().window(tabs2.get(1)); 71 | str = driver.getCurrentUrl(); 72 | System.out.println(str); 73 | str = driver.findElement(By.id("productTitle")).getText(); 74 | Assert.assertTrue(str.contains("Lenovo Legion Y540")); 75 | str = driver.findElement(By.xpath("//*[@id=\"ddmDeliveryMessage\"]")).getText(); 76 | Assert.assertTrue(str.contains("Delivery")); 77 | Assert.assertTrue(driver.findElement(By.xpath("//*[@id=\"add-to-cart-button\"]")).isEnabled()); 78 | Assert.assertTrue(driver.findElement(By.xpath("//*[@id=\"buy-now-button\"]")).isEnabled()); 79 | } 80 | @AfterSuite 81 | public void aftersuite() 82 | { 83 | System.out.println("After Suite"); 84 | } 85 | @AfterClass 86 | public void afterclass() 87 | { 88 | System.out.println("After Class"); 89 | } 90 | @AfterMethod 91 | public void aftermethod() 92 | { 93 | System.out.println("After Method"); 94 | } 95 | } 96 | -------------------------------------------------------------------------------- /12_ExcelRead/Generic.java: -------------------------------------------------------------------------------- 1 | package Selenium; 2 | 3 | import java.io.File; 4 | 5 | import java.io.FileInputStream; 6 | 7 | import java.io.IOException; 8 | 9 | import org.apache.poi.hssf.usermodel.HSSFWorkbook; 10 | 11 | import org.apache.poi.ss.usermodel.Row; 12 | 13 | import org.apache.poi.ss.usermodel.Sheet; 14 | 15 | import org.apache.poi.ss.usermodel.Workbook; 16 | 17 | import org.apache.poi.xssf.usermodel.XSSFWorkbook; 18 | import org.openqa.selenium.By; 19 | import org.openqa.selenium.WebDriver; 20 | import org.openqa.selenium.WebElement; 21 | import org.openqa.selenium.firefox.FirefoxDriver; 22 | import org.testng.annotations.AfterMethod; 23 | import org.testng.annotations.BeforeMethod; 24 | import org.testng.annotations.BeforeSuite; 25 | import org.testng.annotations.DataProvider; 26 | import org.testng.annotations.Test; 27 | 28 | 29 | public class Login_Github_excel_file { 30 | 31 | public static String str; 32 | public static WebDriver driver; 33 | public static WebElement element; 34 | 35 | @BeforeSuite 36 | public void Setup_Drivers() 37 | { 38 | System.out.println("1"); 39 | System.setProperty("webdriver.gecko.driver", "D:\\Selenium_Drivers\\geckodriver.exe"); 40 | System.out.println("beforesuite"); 41 | } 42 | 43 | 44 | @BeforeMethod 45 | public void Visit_GitHub() 46 | { 47 | System.out.println("2"); 48 | driver = new FirefoxDriver(); 49 | driver.navigate().to("https://github.com/login"); 50 | driver.manage().window().maximize(); 51 | } 52 | 53 | 54 | @Test(dataProvider = "getData") 55 | public void Login(String username, String password) 56 | { 57 | //Assertions 58 | //str = driver.findElement(By.xpath("//*[@id=\"login\"]/form/div[1]/h1")).getText(); 59 | //Assert.assertTrue(str.contains("Sign")); 60 | //str = driver.findElement(By.xpath("//*[@id=\"login\"]/form/div[4]/label[1]")).getText(); 61 | //Assert.assertTrue(str.contains("Username")); 62 | //str = driver.findElement(By.xpath("//*[@id=\"login\"]/form/div[4]/label[2]")).getText(); 63 | //Assert.assertTrue(str.contains("Password")); 64 | //Assert.assertTrue(driver.findElement(By.xpath("//*[@id=\"login\"]/form/div[4]/input[9]")).isEnabled()); 65 | //Image check /html/body/div[1]/div[2]/div/a/svg 66 | 67 | element = driver.findElement(By.name("login")); 68 | element.sendKeys(username); 69 | element = driver.findElement(By.name("password")); 70 | element.sendKeys(password); 71 | driver.findElement(By.name("commit")).click(); 72 | } 73 | 74 | 75 | public String[][] readExcel() throws IOException{ 76 | 77 | //Create an object of File class to open xlsx file 78 | System.out.println("readExcel"); 79 | String fileName="D:\\Test_Automation\\src\\Selenium\\username_password.xlsx"; 80 | String sheetName="Sheet1"; 81 | File file = new File(fileName); 82 | 83 | 84 | //Create an object of FileInputStream class to read excel file 85 | 86 | FileInputStream inputStream = new FileInputStream(file); 87 | 88 | Workbook LoginWorkbook = null; 89 | 90 | //Find the file extension by splitting file name in substring and getting only extension name 91 | 92 | String fileExtensionName = fileName.substring(fileName.indexOf(".")); 93 | 94 | //Check condition if the file is xlsx file 95 | 96 | if(fileExtensionName.equals(".xlsx")){ 97 | 98 | //If it is xlsx file then create object of XSSFWorkbook class 99 | 100 | LoginWorkbook = new XSSFWorkbook(inputStream); 101 | 102 | } 103 | 104 | //Check condition if the file is xls file 105 | 106 | else if(fileExtensionName.equals(".xls")){ 107 | 108 | //If it is xls file then create object of HSSFWorkbook class 109 | 110 | LoginWorkbook = new HSSFWorkbook(inputStream); 111 | 112 | } 113 | 114 | //Read sheet inside the workbook by its name 115 | 116 | Sheet LoginSheet = LoginWorkbook.getSheet(sheetName); 117 | 118 | //Find number of rows in excel file 119 | int totalrows=LoginSheet.getLastRowNum(); 120 | int totalcolumns=LoginSheet.getFirstRowNum(); 121 | 122 | int rowCount = totalrows-totalcolumns; 123 | 124 | String dataArray[][] =null; 125 | dataArray= new String[totalrows][totalcolumns]; 126 | //Create a loop over all the rows of excel file to read it 127 | 128 | for (int i = 0; i < rowCount+1; i++) { 129 | 130 | Row row = LoginSheet.getRow(i); 131 | 132 | //Create a loop to print cell values in a row 133 | 134 | for (int j = 0; j < row.getLastCellNum(); j++) { 135 | 136 | System.out.print("Hello"); 137 | //Print Excel data in console 138 | dataArray[i][j]=row.getCell(j).getStringCellValue(); 139 | System.out.print(dataArray[i][j]+"|| "); 140 | 141 | } 142 | 143 | System.out.println(); 144 | } 145 | return dataArray; 146 | } 147 | 148 | 149 | 150 | @DataProvider 151 | public Object[][] getData() throws Exception{ 152 | Object[][] obj = readExcel(); 153 | return obj; 154 | } 155 | 156 | @AfterMethod 157 | public void afterMethod() 158 | { 159 | driver.close(); 160 | 161 | } 162 | //Main function is calling readExcel function to read data from excel file 163 | 164 | public static void main(String...strings) throws IOException 165 | 166 | { 167 | 168 | //Create an object of ReadGuru99ExcelFile class 169 | 170 | Login_Github_excel_file objExcelFile = new Login_Github_excel_file(); 171 | 172 | //Prepare the path of excel file 173 | 174 | //Call read file method of the class to read data 175 | 176 | objExcelFile.readExcel(); 177 | 178 | } 179 | 180 | } 181 | -------------------------------------------------------------------------------- /12_ExcelRead/ReadExcel.java: -------------------------------------------------------------------------------- 1 | //https://www.javatpoint.com/how-to-read-excel-file-in-java 2 | 3 | package excel; 4 | 5 | import java.io.FileInputStream; 6 | import java.io.IOException; 7 | 8 | import org.apache.poi.xssf.usermodel.XSSFRow; 9 | import org.apache.poi.xssf.usermodel.XSSFSheet; 10 | import org.apache.poi.xssf.usermodel.XSSFWorkbook; 11 | import org.testng.annotations.Test; 12 | 13 | public class ReadExcel { 14 | @Test 15 | public void read_excel() 16 | { 17 | try 18 | { 19 | FileInputStream f = new FileInputStream("D:\\UPES DevOps\\DevOps Sem 6\\Test Automation\\Lab\\8_ReadExcel\\Workbook.xlsx"); 20 | XSSFWorkbook wb = new XSSFWorkbook(f); 21 | XSSFSheet sheet = wb.getSheet("Login"); 22 | int count; 23 | String username, password; 24 | //Start count from 1 because 0th row has headings only 25 | for(count = 1; count<=sheet.getLastRowNum(); count++) 26 | { 27 | //Capture entire row 28 | XSSFRow row = sheet.getRow(count); 29 | username = row.getCell(0).getStringCellValue(); 30 | password = row.getCell(1).getStringCellValue(); 31 | System.out.println("Username: " + username); 32 | System.out.println("Password: " + password); 33 | } 34 | System.out.println("\n\n"); 35 | f.close(); 36 | wb.close(); 37 | } 38 | catch(IOException e) 39 | { 40 | System.out.println("Exception encountered! Exiting Code!!!"); 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /13_DataProviders/DataProviders.java: -------------------------------------------------------------------------------- 1 | package testNG; 2 | 3 | import org.openqa.selenium.By; 4 | import org.openqa.selenium.WebDriver; 5 | import org.openqa.selenium.WebElement; 6 | import org.openqa.selenium.chrome.ChromeDriver; 7 | import org.testng.annotations.DataProvider; 8 | import org.testng.annotations.Test; 9 | public class DataProviders { 10 | @Test(dataProvider = "getData") 11 | public void Login(String username, String password) 12 | { 13 | System.setProperty("webdriver.chrome.driver", "D:\\UPES DevOps\\DevOps Sem 6\\Test Automation\\Softwares\\chromedriver.exe"); 14 | WebDriver driver=new ChromeDriver(); 15 | driver.navigate().to("https://github.com/login"); 16 | driver.manage().window().maximize(); 17 | WebElement element; 18 | element = driver.findElement(By.name("login")); 19 | element.sendKeys(username); 20 | element = driver.findElement(By.name("password")); 21 | element.sendKeys(password); 22 | driver.findElement(By.name("commit")).click(); 23 | } 24 | @DataProvider(name="getData") 25 | public Object[][] getData(){ 26 | Object[][] obj = new Object[1][2]; 27 | obj[0][0] = "<>"; 28 | obj[0][1] = "<>"; 29 | return obj; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /13_DataProviders/ProviderInput.java: -------------------------------------------------------------------------------- 1 | package testNG; 2 | 3 | import org.openqa.selenium.By; 4 | import org.openqa.selenium.WebDriver; 5 | import org.openqa.selenium.WebElement; 6 | import org.openqa.selenium.chrome.ChromeDriver; 7 | import org.testng.annotations.DataProvider; 8 | import org.testng.annotations.Test; 9 | 10 | class Input { 11 | @DataProvider(name="getData") 12 | public Object[][] getData(){ 13 | Object[][] obj = new Object[1][2]; 14 | obj[0][0] = "<>"; 15 | obj[0][1] = "<>"; 16 | return obj; 17 | } 18 | } 19 | 20 | public class ProviderInput { 21 | @Test(dataProvider = "getData",dataProviderClass=Input.class) 22 | public void Login(String username, String password) 23 | { 24 | System.setProperty("webdriver.chrome.driver", "D:\\UPES DevOps\\DevOps Sem 6\\Test Automation\\Softwares\\chromedriver.exe"); 25 | WebDriver driver=new ChromeDriver(); 26 | driver.navigate().to("https://github.com/login"); 27 | driver.manage().window().maximize(); 28 | WebElement element; 29 | element = driver.findElement(By.name("login")); 30 | element.sendKeys(username); 31 | element = driver.findElement(By.name("password")); 32 | element.sendKeys(password); 33 | driver.findElement(By.name("commit")).click(); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /1_ChromeDriverInstallation/ChromeTC.java: -------------------------------------------------------------------------------- 1 | package ChromeInstallation; 2 | import org.openqa.selenium.By; 3 | import org.openqa.selenium.WebDriver; 4 | import org.openqa.selenium.WebElement; 5 | import org.openqa.selenium.chrome.ChromeDriver; 6 | 7 | public class ChromeTC { 8 | public static void main(String [] args) 9 | { 10 | System.setProperty("webdriver.chrome.driver", "\\chromedriver.exe"); 11 | //declaration and installation of objects and variables 12 | WebDriver driver=new ChromeDriver(); 13 | //Launch Website 14 | driver.navigate().to("http://www.google.com/"); 15 | WebElement element=driver.findElement(By.name("q")); 16 | //Click on search text box and send value 17 | element.sendKeys(""); 18 | element.submit(); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /1_ChromeDriverInstallation/README.md: -------------------------------------------------------------------------------- 1 | # Steps to install ChromeDriver to interface Java Program in an IDE with Web Browser using Selenium 2 | 3 | ## Pre-Requisites 4 | 5 | 1. Java JDK 1.8 or above 6 | 2. Eclipse IDE 7 | 3. Selenium Java [3.14](1_ChromeDriverInstallation/Software/Selenium%20Java%203.14) or above 8 | 4. Google Chrome Web Browser 9 | 5. Google [ChromeDriver](1_ChromeDriverInstallation/Software/chromedriver.exe) 10 | 11 | ## Steps 12 | 13 | 1. Open Eclipse for Java 14 | 2. File -> New -> Java Project 15 | 16 | * Set any name. 17 | * Use Java 1.8 or above version 18 | * Do not create module-java.info file 19 | 20 | 3. Create a Java Class in package name same as project name 21 | 22 | 4. Right click on project name -> Build Path -> Configure Build Path 23 | 24 | 5. Go to libraries tab -> Click on Classpath -> Add External Jar 25 | 26 | 6. Add all 7 jar files present in Selenium Java package 27 | 28 | 7. Apply and Close 29 | 30 | 8. Copy the Code for [Chrome Driver](1_ChromeDriverInstallation/ChromeTC.java) 31 | 32 | 9. Run the Code 33 | -------------------------------------------------------------------------------- /1_ChromeDriverInstallation/Software/Selenium Java 3.14/CHANGELOG: -------------------------------------------------------------------------------- 1 | v3.141.59 2 | ========= 3 | 4 | * Restored remoteHost support 5 | * [Grid] Adding a test to check that remoteHost is properly read and 6 | set. 7 | * Fix mime-types of displayed content in help servlet. 8 | * Encourage people to access help over https. 9 | * Implement `WrapsElement` by `Select` element wrapper (#6616) 10 | * Version number is an even better approximation of π. 11 | 12 | v3.141.5 13 | ======== 14 | 15 | * Default the number of threads assigned to the server to 200, 16 | which is what it was in 3.13.0 17 | 18 | v3.141.0 19 | ======== 20 | 21 | * Hub status should only count reachable proxies. Fixes #6494. 22 | * Deprecated the original Actions API in favour of the W3C approach. 23 | * Correct localisation of platform name (#6491) 24 | * Beta commands in SafariDriver for opening a new window or tab. 25 | * Clean up of internal of `Select` element wrapper (#6501) 26 | * Acknowledge that Mojave is a `Platform` (#6552) 27 | * Deleted many command-line options marked as deprecated some time 28 | ago. 29 | * Removed Selenium's own deprecated `Duration` and `Clock` classes in 30 | favour of those provided by the JRE. 31 | * Fixed WebDriverBackedSelenium servlet by registering a session 32 | finalization listener. 33 | * Installing Firefox extensions in the same form as they provided, 34 | either as a file or as a directory. With the release of Firefox 62 35 | Mozilla discontinued support for unpacked sideloaded extensions in 36 | Release channel. Users must themselves choose proper format to use 37 | in their tests depending on the browser version they run tests in. 38 | * Prepended command names in https error response reports (#6321) 39 | * Removed the apache-backed httpclient. 40 | * Fixing regression in Grid: if -hubPort was specified through CLI 41 | params but not -hubHost, the node tried to register to 42 | http://null:hubPort. 43 | * Fixing regression in Grid by using browserTimeout again to set 44 | timeouts in the HttpClient. 45 | * Grid: adding image for Safari Technology Preview, fixes #6297 46 | * Grid: Nodes and Hubs can now be started in any order, and 47 | configuration will be correct Fixes #3064. 48 | * Added a basic ServiceBuilder for Internet Explorer (#6181) 49 | * Version number is a better approximation of π. 50 | 51 | v3.14.0 52 | ======= 53 | 54 | * Move or deprecate internal classes in java client 55 | * Introduce basic JPMS support. This is experimental. 56 | * The browser name of the Safari Tech Preview is not "safari" but 57 | "Safari Technology Preview". Who knew? 58 | * Deprecated our own `Clock` interface for `java.time.Clock` 59 | * Completely removed the GSON dependency. We now use reflection to try 60 | and find the class. 61 | * Tiny clean up to try and make Grid a little more performant. 62 | * Added new capabilities for safari driver: automaticInspection and 63 | automaticProfiling (#6095) This commit is from the "Fix a Bug, 64 | Become a Committer" workshop held at SeConf India. 65 | * Removed support for geckodriver 0.13. It is time. 66 | * Adding High Sierra to the platform set. Fixes #5969 67 | * Enriching Hub Status to include Node info (#6127) 68 | * Fixing potential Zip Slip Vulnerability, see 69 | https://snyk.io/research/zip-slip-vulnerability 70 | * Allow temporary installation of FF extension (#1) (#5751) 71 | * Fix windowSize option in Firefox in Javascript (#6075) 72 | * Make ConnectionType searilize as integer (#6176) 73 | * Pass found elements to the EventListener's afterFind method (#6191) 74 | * Add native events under se:ieOptions. (#6183) 75 | 76 | v3.13.0 77 | ======= 78 | 79 | * Introduced our own JSON parser and outputter, allowing GSON to be 80 | removed from our dependencies. 81 | * Exposing a `RemoteWebDriverBuilder` which can be used to construct 82 | instances of selenium when talking to servers that speak the w3c 83 | protocol. 84 | * Fixed loading of Grid hub and node config files. 85 | * Fixed `noProxy` handling in Grid. 86 | * Added bindings for custom ChromeDriver commands 87 | (GET_NETWORK_CONDITIONS, SET_NETWORK_CONDITIONS and 88 | DELETE_NETWORK_CONDITIONS) that allows client code to utilize 89 | built-in throttling functionality. (#3479) 90 | * Minimised data being encoded as JSON when serialising Java objects. 91 | * EventFiringWebDriver now fires events before and after `getText` and 92 | implements `HasCapabilities`. 93 | 94 | v3.12.0 95 | ======= 96 | 97 | * Added `User-Agent` header to requests from Selenium to give remote 98 | ends more visibility into distribution of clients. 99 | * Remove GSON from how we coerce JSON to Java types. 100 | * Clean up the internals of Selenium's JSON handling, including 101 | deprecating places where GSON leaks from our APIs. 102 | * Grid assignes node to a random free port if not specified. 103 | explicitly. Fixes #5783. 104 | * Addressed concerns about backward compatibility of Grid's `-host` 105 | parameter. 106 | * Implemented WebStorage in ChromeDriver and FirefoxDriver. 107 | * Documentation clean up in `By`. 108 | * `before/afterGetScreenshotAs` added to to WebDriverEventListener. 109 | 110 | v3.11.0 111 | ======= 112 | 113 | * Implemented `equals` and `hashCode` for `LoggingPreferences` 114 | * Deleted deprecated methods from `*Options` and `MutableCapabilities` 115 | * Converting an object to JSON now doesn't include the object's hash 116 | code. 117 | * Removed deprecated methods from `RemoteWebDriver`. 118 | * Switching Grid to use OkHttp rather than the Apache HttpClient. 119 | * Internal change to better use Selenium's abstractions for handing 120 | JSON in Grid. 121 | * Removed deprecated `GridRegistry.getHttpClientFactory` method. 122 | * Removed `Registry.getConfiguration` 123 | 124 | v3.10.0 125 | ======= 126 | 127 | * Deprecate internal Duration in favor of java.time.Duration 128 | * Fix handling of IE capabilities in Grid Nodes. Fixes #5502 129 | * Fix problem where Grid wasn't starting Safari sessions 130 | * Migrate Selenium Grid to reduce exporting GSON and Apache HttpClient 131 | as much to public APIs. 132 | * Migrate Grid to use Selenium's own abstractions where possible. This 133 | means that more of it is using OkHttp rather than the Apache 134 | HttpClient. 135 | * Fix an issue where RemoteProxy instances were causing an exception 136 | to be thrown if they weren't marked as a ManagedService. 137 | * Deleting ability to run html suites with selenium-server-standalone, 138 | users are adviced to use htmlrunner 139 | 140 | v3.9.1 141 | ====== 142 | 143 | * OkHttp backed instances can now connect to servers requiring 144 | authorisation. Based on PR #5444 proposed by @valfirst. 145 | 146 | v3.9.0 147 | ====== 148 | 149 | * Switched to OkHttp for all HTTP communication. The version used can 150 | be changed back to the Apache HttpClient by setting the 151 | `webdriver.http.factory` system property to `apache`. 152 | * Removed passthrough mode for the server. 153 | * Grid: (implementation note) Start migrating servlets used to be 154 | command handlers. 155 | * Upgraded every dependency to latest versions. 156 | * Added varargs methods to `ExpectedConditions` in order to avoid 157 | annoying `Arrays.asList`. 158 | * Better logging when new session creation errors. 159 | 160 | v3.8.1 161 | ====== 162 | 163 | * Fixed Chrome mutator injecting null binary path into new session payload. 164 | * Added mutator that stips grid-specific capabilities hurting IE driver. 165 | * Fixed SafariOptions construction from plain Capabilities object. 166 | 167 | v3.8.0 168 | ====== 169 | 170 | * Dropped support for PhantomJS, it's recommended to use headless Firefox or 171 | Chrome instead. 172 | * Node skips configurations that does not match current platform, no more IE 173 | slots on Linux-based nodes. 174 | * Introduced unique ids for node slot configurations. Hub injects UID of the 175 | matched configuration to the new request payload. Node mutates capabilities 176 | with matching config UUID only. This allows to have multiple configurations 177 | for the same browser in node config file. 178 | * Implemented matching of some browser-specific capabilities on Grid hub, 179 | namely "marionette" for Firefox (default is true) and "technologyPreview" 180 | for Safari (default is false). 181 | * "technologyPreview" capability is now honored again by SafariDriver. 182 | * Added initial support for managing Grid Hubs and Nodes via JMX 183 | * Removed `Alert.authenticate` and supporting classes 184 | * Better handling of configuring SafariDriver via capabilities. 185 | 186 | v3.7.1 187 | ====== 188 | 189 | * Including httpcore in the packaged libs. 190 | * Sending geckodriver logs to stderr by default. The default log level 191 | is low enough that the log does not look polluted. Geckodriver does 192 | not allow to separate its own log from the browser logs, so messages 193 | from the browser log can appear in the log even on the lowest level. 194 | * Avoid sending the shutdown command to driver services that don't 195 | support it. 196 | * Add support for customizing the Grid Registry. 197 | 198 | v3.7.0 199 | ====== 200 | 201 | * Firefox and Chrome binary paths specified in Grid Node configs are 202 | now honoured. 203 | * W3C spec compliant drivers need not return RGBA values for colours 204 | defined in CSS. 205 | * Minimise disk usage when starting new remote sessions. 206 | * SafariDriver and legacy FirefoxDriver can now be configured when 207 | using the remote server through Capabilities. Notably, this allows 208 | the Safari Technology Preview to be used if it's installed. 209 | * Implemented the ability to configure the firefox log target using 210 | the driver service builder or a system property. Logs are sent to 211 | the null output stream by default. Fixes #4136 212 | * Simulate some w3c Actions commands using the old APIs. This allows a 213 | local end that only speaks the JSON Wire Protocol to use 214 | "Actions.moveTo" when communicating with a W3C compliant remote 215 | end. Apparently, people need this. 216 | * More fluent APIs in `*Options` classes. 217 | * Moving some safari config options from `SafariOptions` to the 218 | `SafariDriverService`. 219 | * In Grid and Remote, force the use of the legacy Firefox driver when 220 | marionette flag is set. 221 | * The protocol handshake now uses a `CapabilityTransform` to convert 222 | an JSON Wire Protocol capability to one or more w3c 223 | capabilities. These are located using the standard Java 224 | ServiceLoader framework. 225 | * The protocol handshake also uses a `CapabilitiesFilter` that 226 | extracts keys and values specific to a browser from a JSON Wire 227 | Protocol capabilities map. Again, these are loaded using the 228 | `ServiceLoader` framework. 229 | * `requiredCapabilities` are now no longer sent across the wire. 230 | * Fixed handling of unrecognized platform names returned by remote 231 | end. #4781 232 | * Better error messages from the htmlrunner. 233 | * Migrated from using `DesiredCapabilities` to either 234 | `MutableCapabilities` or (preferably) `ImmutableCapabilities`. 235 | * Move building of locators to How enum 236 | 237 | 238 | v3.6.0 239 | ====== 240 | 241 | * Remove direct dependency on HTMLUnit and PhantomJS from Maven 242 | artifacts. 243 | * All `*Option` classes now extend `MutableCapbilities` 244 | `new RemoteWebDriver(new ChromeOptions());` 245 | * Deprecating constructors that don't take strongly-typed `*Options`. 246 | * Improved exceptions when a `Wait` times out when using a 247 | `WrappedWebDriver`. 248 | * Added `Interactive` interface to EventFiringWebDriver. Fixes #4589 249 | * Add options to start Firefox and Chrome in headless modes. 250 | 251 | 252 | v3.5.3 253 | ====== 254 | 255 | Important note: 256 | 257 | * The new standalone server and Grid Node feature a "pass through" 258 | mode. If you see changes to the Selenium WebDriver "logging" APIs or 259 | automatic capture of screenshots on error (or if you want the old 260 | behaviour back) you can do so by executing: 261 | 262 | `java -jar selenium-server-standalone-3.5.3.jar -enablePassThrough false` 263 | 264 | * Allow user-provided DriverProviders to override default providers in 265 | passthrough mode. 266 | * Fixes issue with W3C Actions not being properly filled when multiple 267 | input sources are used. 268 | * Platform that represent platform families ("WINDOWS", "UNIX", "MAC", 269 | and "IOS") return `null` from `Platform.getFamily`. 270 | * Handle null return values from chromedriver. Fixes #4555 271 | * Synchronized "platform" and "platformName" capability values. Fixes #4565 272 | * Add iOS `Platform`. 273 | * Fix wrapping of maps with null values. Fixes #3380 274 | * Grid: Add new w3c compatible `status` endpoints for Hub and nodes. 275 | * Grid: Properly parse responses from upstream nodes that are not 276 | 200. Fixes issue where `NoSuchElementException` was mistaken for a 277 | `NoSuchSessionException`. 278 | * Grid: Handle re-encoding issue when transferring text from the 279 | endpoint node to the local end. 280 | 281 | 282 | v3.5.2 283 | ====== 284 | 285 | Important note: 286 | 287 | * The new standalone server and Grid Node feature a "pass through" 288 | mode. If you see changes to the Selenium WebDriver "logging" APIs or 289 | automatic capture of screenshots on error (or if you want the old 290 | behaviour back) you can do so by executing: 291 | 292 | `java -jar selenium-server-standalone-3.5.2.jar -enablePassThrough false` 293 | 294 | * Avoid encoding numbers as floats rather then longs in JSON payloads. 295 | * New "pass through" mode supports file uploads again. 296 | * Added support for querying running sessions via the 297 | "/wd/hub/sessions" endpoint 298 | * Fix a NullPointerException when deserializing exceptions from a 299 | remote webdriver. 300 | * Handle the `macOS` as a valid platform name, as this is used by 301 | safaridriver. 302 | 303 | 304 | v3.5.1 305 | ====== 306 | 307 | Important note: 308 | 309 | * The new standalone server and Grid Node feature a "pass through" 310 | mode. If you see changes to the Selenium WebDriver "logging" APIs or 311 | automatic capture of screenshots on error (or if you want the old 312 | behaviour back) you can do so by executing: 313 | 314 | `java -jar selenium-server-standalone-3.5.1.jar -enablePassThrough false` 315 | 316 | * Bump guava to version 23. This is work around an issue where maven 317 | will select guava's android variant if using a ranged selector. 318 | 319 | 320 | v3.5.0 321 | ====== 322 | 323 | Note: Never pushed to maven due to problems resolving guava version. 324 | 325 | Important note: 326 | 327 | * The new standalone server and Grid Node feature a "pass through" 328 | mode. If you see changes to the Selenium WebDriver "logging" APIs or 329 | automatic capture of screenshots on error (or if you want the old 330 | behaviour back) you can do so by executing: 331 | 332 | `java -jar selenium-server-standalone-3.5.0.jar -enablePassThrough false` 333 | 334 | * Bump guava to version 22. 335 | * Add support for a new "pass through" mode. This allows a connection 336 | from your test's RemoteWebDriver, through the Grid Hub, to a Grid 337 | Node, and down to a DriverService and thence the browser to use the 338 | same WebDriver protocol (the Json Wire Protocol or the W3C one) end 339 | to end without translation. This mode can be disabled by starting 340 | the standalone server or Grid node with `-enablePassThrough false` 341 | * Pin Guava to version 21+. This fixes problems with lambdas being 342 | used as ExpectedConditions. 343 | * Start making *Option classes instances of Capabilities. This allows 344 | the user to do: 345 | `WebDriver driver = new RemoteWebDriver(new InternetExplorerOptions());` 346 | * Better handling of `getText` when confronted with a Shadow DOM 347 | * Better logging when using an Augmenter fails. 348 | * Make it easier to add new @FindBy annotations. 349 | * Attempt to kill processes before draining input, error, and output 350 | streams. This should reduce apparent hanging when closing Firefox in 351 | particular. 352 | * Grid will make use of W3C capabilities in prefernce to the JSON Wire 353 | Protocol ones. 354 | * Fixing boolean command line arguments (#3877) 355 | 356 | v3.4.0 357 | ====== 358 | 359 | * Geckodriver 0.16 is strongly recommended 360 | * LiFT package is now available as a separate maven dependency. 361 | * Deprecated numerous constructors on RemoteWebDriver that are no 362 | longer useful. 363 | * `requiredCapabilities` are now being removed. Use 364 | `desiredCapabilities` instead. 365 | * Legacy Firefox support broken out into a `XpiDriverService`, but 366 | still relies on the same `webdriver.xpi` as before. 367 | * Better support for W3C endpoints 368 | 369 | v3.3.1 370 | ====== 371 | 372 | * Better support for geckodriver v0.15.0. Notably, exceptions returned 373 | from the remote end are now unwrapped properly. 374 | * Fix a bug with the status page of the standalone server. 375 | * Deprecated `Capabilities.isJavascriptEnabled` 376 | 377 | 378 | v3.3.0 379 | ====== 380 | 381 | * Support for geckodriver v0.15.0. 382 | * Deprecated seldom used FirefoxDriver constructors. 383 | * Added javadocs to show best way to create a new FirefoxDriver: 384 | ``` 385 | DesiredCapabilities caps = new FirefoxOptions() 386 | // For example purposes only 387 | .setProfile(new FirefoxProfile()) 388 | .addTo(DesiredCapabilities.firefox()); 389 | WebDriver driver = new FirefoxDriver(caps); 390 | ``` 391 | * Stream New Session capabilities to disk before use to avoid eating 392 | every byte of available memory. 393 | * Beginnings of local-end implementation of the w3c New Session 394 | capabilities. There's still some work to do. 395 | 396 | v3.2.0 397 | ====== 398 | 399 | * Updated Guava to version 21 and started using Java 8 features. Users 400 | are recommended to update too. 401 | * Fix a problem starting Firefox caused by missing libraries 402 | * Experimental support for the W3C Action endpoints 403 | * Remove deprecated `FluentWait.until(Predicate)` method. This 404 | should make lambdas work properly with Wait instances now. 405 | * Bump htmlunitdriver version to 2.24 406 | * [Grid] Allow for customisation of TestSlot (#3431) 407 | 408 | v3.1.0 409 | ====== 410 | 411 | * Update how the WebDriverException gathers system info. Resolves an 412 | issue with slow-downs on OS X Sierra. 413 | * Update Wait and FluentWait for Java 8. Requires an update to the 414 | latest guava version 21.0 415 | * Remove old marionette actions support. 416 | * Selenium server now understands a "-version" flag. 417 | * `WebElement.getText` now returns text from the Shadow DOM. 418 | * Implemented a more straightforward way to specify firefox binary in 419 | GeckoDriverService builder. 420 | * Firefox can now pick a channel to start from on Windows via 421 | `FirefoxBinary.Channel` 422 | * ChromeDriver now supports `NetworkConnection` interface. 423 | * htmlrunner bug fixes, in particular around `getValue`, and relative 424 | paths to the suite file. 425 | * Fixes to make htmlrunner work. 426 | * Removed native events from FirefoxDriver. 427 | * Truncate the string representation of capabilities for display purposes. 428 | * Implemented session storage for w3c codec. 429 | * Change server dependency to htmlunit 2.23.2. 430 | * [Grid] DefaultCapabilityMatcher now considers "browserVersion". 431 | * [Grid] Fix node registration issue for Se2.x nodes with -servlets. 432 | * [Grid] Windows nodes are no longer displayed as "mixedOS". 433 | * [Grid] browser version capability specified on node command line no longer parsed to a Number 434 | 435 | v3.0.1 436 | ====== 437 | 438 | * Include ElementScrollBehavior enum in the release. 439 | * Add dependency on HTMLUnit to be included in the standalone server. 440 | * Grid new session requests pass original request through to the node 441 | without any modifications. 442 | * Fix NPE in htmlrunner when port is not specified. 443 | * FirefoxDriver (legacy) fix to cleanup temp filesystem on quit (#2914 #2908). 444 | 445 | v3.0.0 446 | ====== 447 | 448 | IMPORTANT CHANGES 449 | 450 | * Firefox is only fully supported at version 47.0.1 or earlier. Support 451 | for later versions of firefox is provided by geckodriver, which is 452 | based on the evolving W3C WebDriver spec, and uses the wire protocol 453 | in that spec, which is liable to change without notice. 454 | * You may wish to choose an ESR release such as 45.4.0esr or earlier. 455 | * Firefox 47.0.0 is not supported at all. 456 | 457 | Other major changes: 458 | 459 | * Stability fixes in Grid. 460 | * All Grid nodes can now offer help. 461 | * Updated to the latest version of HtmlUnitDriver. 462 | * Re-enabled log gathering for the standalone server. 463 | * Firefox profile is passed to both the legacy FirefoxDriver and 464 | geckodriver. 465 | 466 | v3.0.0-beta4 467 | ============ 468 | 469 | IMPORTANT CHANGES 470 | 471 | * Firefox is only fully supported at version 47.0.1 or earlier. Support 472 | for later versions of firefox is provided by geckodriver, which is 473 | based on the evolving W3C WebDriver spec, and uses the wire protocol 474 | in that spec, which is liable to change without notice. 475 | * You may wish to choose an ESR release such as 45.4.0esr or earlier. 476 | * Firefox 47.0.0 is not supported at all. 477 | 478 | Other major changes: 479 | 480 | * Remove OSS safaridriver in preference for Apple's own SafariDriver 481 | that ships as part of Safari 10. 482 | * [Grid] -nodeConfig (json) files have a new flatter format (#2789) 483 | * [Grid] Fix #2721, -nodeConfig (json) settings were not always 484 | applied 485 | * [Grid] Cleanup the api for RegistrationRequest -- will break 486 | compilation for people moving from 2.x -- removed the ability to 487 | change the GridNodeConfiguration reference via the 488 | RegistrationRequest object and removed all other setters 489 | * Include the selenium version in exceptions (again). 490 | * [HTML suite runner] Better flag compatibility with the 2.x 491 | selenium-server-standalone. 492 | * Fix #2727, combine -jettyThreads and -jettyMaxThreads (#2735) 493 | * [atoms] Cleaning up getAttribute dependencies, reducing size from 494 | 36K to 7K 495 | * Better support for the W3C webdriver wire codec. 496 | * Added ability to use FirefoxOptions when starting firefox. 497 | * Fixed a bug where the firefox profile was not being passed to the 498 | geckodriver. 499 | * SafariDriver's Technology Preview can be used if installed. 500 | 501 | v3.0.0-beta3 502 | ============ 503 | 504 | * The HTML table runner can be downloaded as selenium-html-runner.jar. 505 | * leg-rc jar is no longer bundled into the main selenium jar. Instead, 506 | it needs to be downloaded separately. 507 | * Removed deprecated SessionNotFoundException in favour of the 508 | NoSuchSessionException. 509 | * Added a "protocol handshake" on starting a remote webdriver. We now 510 | log the wire dialect spoken (original as "OSS" and the version 511 | tracking the W3C spec as "W3C"). This may result in multiple calls 512 | to the new session endpoint on local end start up. 513 | * Removed command names ending with "*w3c" and instead handle this 514 | with different codecs. 515 | * Switch to using atoms for 'getAttribute' and 'isDisplayed' when 516 | communicating with a W3C remote end. 517 | 518 | v3.0.0-beta2 519 | ============ 520 | 521 | * maven packaging fixes 522 | * Update GeckoDriver --port argument in all bindings 523 | * System property webdriver.firefox.marionette now forces the server in marionette or legacy firefox driver mode, ignoring any related Desired Capability 524 | * Grid fix NPE's on registration when -browser not specified 525 | 526 | v3.0.0-beta1 527 | ============ 528 | 529 | IMPORTANT CHANGES 530 | 531 | * Minimum java version is now 8+ 532 | * The original RC APIs are only available via the leg-rc package. 533 | * To run exported IDE tests, ensure that the leg-rc package is on the 534 | classpath. 535 | * Support for Firefox is via Mozilla's geckodriver. You may download 536 | this from https://github.com/mozilla/geckodriver/releases 537 | * Support for Safari is provided on macOS (Sierra or later) via 538 | Apple's own safaridriver. 539 | * Support for Edge is provided by MS: 540 | https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/ 541 | * Official support for IE requires version 9 or above. Earlier 542 | versions may work, but are no longer supported as MS has 543 | end-of-lifed them. 544 | 545 | Other major changes: 546 | 547 | * New html-table runner backed by WebDriver. 548 | * Unused command line arguments are now no longer parsed. 549 | 550 | 551 | v2.53.0 552 | ======= 553 | 554 | FINAL 2.X RELEASE. 555 | 556 | No more HtmlUnitDriver... Moved to a subproject https://github.com/SeleniumHQ/htmlunit-driver 557 | 558 | Java: 559 | * Query Selenium Server to retrieve actual running port. Fixes #1299 560 | * Upgrading HtmlUnit to 2.20 561 | * Java: Introducing NoSuchSessionException in the core API 562 | * Fixing memory leak in TemporaryFileSystem Fixes #1679 563 | * Fixing rectangle dimension, and adding equals and hashCode 564 | * Java: Adding a new W3C-compatible string error code 565 | * Add support to listen "refresh" events. Fixes #1584 566 | * extended ExpectedConditions with a list of new ones. New logic operators + conditions for css and html attributes 567 | * Java: Deleting webbit a test server 568 | Grid: 569 | * cleanup cycle needs to be persisted to allMap, since that's where it's read from in other places. this stuff needs some cleanup... 570 | * adding grid e2e distribution test 571 | * fix mixed content issue 572 | * when sorting nodes for consideration, also take into account last time accessed for a more even distribution across nodes over the lifetime of the grid. 573 | * Also fix using the RemoteProxy's getResourceUsageInPercent instead of calculating it in the sort. Fixes #1673 574 | * make HttpClientFactory private methods protected to allow one to extend / override. 575 | 576 | v2.52.0 577 | ======= 578 | 579 | Firefox: 580 | * Weakening platform restriction to enable 64-bit support 581 | * Fixing closed window handling in FF45 582 | * Implementing a capability that disables overlapping checks - "overlappingCheckDisabled" 583 | 584 | WebDriver: 585 | * Fix deselecting options in fields 673 | * Treat a null response to getCookies as []. 674 | * Restore a isNativeEventsEnabled check. 675 | * Updating TestNG. 676 | * firefox: Throw error when element cannot be clicked 677 | * Include Windows 10 in the Platform enum. 678 | * adding selenium server pass throughs for W3C dialect of alert / window / cookie commands. 679 | * clearing a number input with invalid text, should actually clear it. 680 | * Add innerHTML attribute support to HtmlUnitDriver 681 | * Add textContent attribute support to HtmlUnitDriver 682 | * make RemoteMouse public, akin to RemoteKeyboard. Not sure why it wasn't made public when it was originally moved out of RWD. 683 | * Use platform-dependant line separator instead of hardcoded '\n'. 684 | * Safari should only specify MAC as platform in default desired capabilities 685 | * improve javadoc for FluentWait 686 | * Changing interface name to be more Java-ish 687 | * Update GeneratedJsTestServlet to work with test files that use Closure's module syntax. 688 | * Adding release-v3 crazyfun target 689 | * should be able to send keys to a content editable div that is initially empty 690 | * Implementing pure WebDriver grid server (v.3) 691 | * Making BrowserLauncherFactory non-static, to avoid global configuration, for better testability and configurability (per object, not globally) 692 | * Server: Moving shared classes to a more appropriate place out of the legacy server namespace 693 | * Deleting RemoteControlLauncher as it is just a couple of static methods to parse command line options, that should belong to the server. 694 | * Refactoring GridLauncher: replacing big switch with a map of simple launchers; it's a step toward decomposition of the GridLauncher and dynamic discovery of the elements that can be launched. 695 | * Refactoring GridLauncher build process 696 | * Decoupling node registration module (SelfRegisteringRemote) from concrete implementation of the server to be run on the node. 697 | * Refactoring grid node registration procedure to make server start/stop methods as simple as possible. 698 | * Breaking another dependency of Grid on RC server 699 | * Deleting fail-fast check of browser configuration, this breaks another Grid dependency on parts of RC server. The check must be performed in RC server (if ever). 700 | * Actually fix the Safari BUCK build 701 | * Monkey-patching W3C-compatible cookie serialization to fix Marionette. A more proper fix would be to change the parameters of a Command from Map to Object. 702 | * There is no need to create a profile for Marionette 703 | * removing prebuilt SafariDriver extension, bumping version number to 2.48 704 | * Fixing tests for JsonToBeanConverter to avoid "error" key collision that has got new semantics in the standard 705 | * Stop exposing embedded jetty out of SeleniumServer 706 | * Breaking unwanted grid dependency on parts of RC server 707 | * Deleting JsonKey, it's a useless abstraction 708 | * Breaking unwanted grid test dependency on RC server (the removed attribute is not used actually) 709 | * Fixes #1140, #1334, #1263, #669, #1165, #1132, #1186, #1203, #1214, #1242 710 | #1241, #1240, #1238, #1237 711 | 712 | v2.48.2 713 | ======= 714 | WebDriver: 715 | * Update fix for ChromeDriver to work with Marionette/Wires also. 716 | 717 | v2.48.1 718 | ======= 719 | WebDriver: 720 | * Fix #1123, ChromeDriver doesn't start up. 721 | 722 | v2.48.0 723 | ======= 724 | 725 | WebDriver: 726 | * java: add ExpectedConditions#numberOfWindowsToBe 727 | * Bump the buck version to the latest version. 728 | * fix maven build for jetty 9 729 | * adding pom files for jetty 9 repakced jars and the empty-javadoc jar used to upload to maven central 730 | * Restoring use of queued thread pool in the hub 731 | * Deleting commented code 732 | * Fixing UploadServlet in test environment to conform to servlet-api 3.1 733 | * Update jetty readme 734 | * Bump the Jetty version from 7 to 9 735 | * Updating screenshot code to retain scroll bars in required directions. 736 | * Updating screenshot code to prevent resizing if window is large enough. 737 | * Removing superfluous comment that was causing javadoc build error in ci 738 | * fixing the remaining jdk 8 javadoc errors 739 | * Make the javadocs for java/server too. 740 | * fixing java command line options for 'go' MaxPermSize -> MetaspaceSize in java 8 741 | * updating third party wicked good xpath to e33a3876a6d592b824942751d86ba5f2b08a3dc5 Fixes #1040 742 | * Removing use of Windows hooks for taking screenshots in IE. 743 | * Firefox: fixing sendKeys for contentEditable elements, it should append to the existing text. 744 | * Buck version bumps 745 | * Update closure-library to 04a8ceefc6972511e669563d47abeca18b28092c 746 | * Firefox: implementing mouse doubleclick action via nsIDOMWindowUtils 747 | * Add FluentWait.withMessage with string supplier 748 | * Firefox: fixing events generated as a result of click on an element that disappears after the click. 749 | * Firefox: implementing mouse up/down actions via nsIDOMWindowUtils. This makes mouse actions "more native". In particular, if there are overlapping element at the click point, the driver will click the topmost element. 750 | * Safari: stop embedding the extension in the client libs, it should be downloaded and installed manually. 751 | * Deleting a couple of redundant casts 752 | * No need to cast, the variable has required type already 753 | * Deleting redundant logging to console in tests 754 | * HtmlUnit: Ignoring one more test 755 | * Disabling a test if JS is not enabled 756 | * HtmlUnit: Unignoring a magically working test 757 | * HtmlUnit: restoring backward compatibility after changes in getCurrentUrl semantics 758 | * WDBC: restoring backward compatibility after changes in getCurrentUrl semantics 759 | * Deleting native events from firefox driver 760 | * Deleting outdated assumes for unsupported Firefox version 761 | * Resorting tests for moveByOffset action 762 | * Firefox: don't dispatch keypress event if defaultPrevent() of the keydown event is called because KEY_FLAG_PREVENT_DEFAULT has no effect 763 | * Moving IE specific test to IE test suite 764 | * Firefox: throwing proper exception on an attempt to find an element in the deleted frame 765 | * Firefox: changing getCurrentUrl to return top level browsing context address (to conform to the standard) 766 | * Firefox: fixing page source for plain text pages 767 | * Adding information on the reasons to ignore tests 768 | * fix the client and server classpath 769 | * Move the servlet-api package for easier automated updates. 770 | * Renaming the Jetty7AppServer to remove the version number. 771 | * Fix up failing htmlunitdriver test. 772 | * Simulating window.getPosition and setPosition operations 773 | * Simulating switchTo().window by name 774 | * Fixing test to switch back to the original window after opening a new one. 775 | * Implementing standard-compliant window operations 776 | * Implementing standard-compliant getSize, getPosition and getPositionInView 777 | * Deleting marionette tcp connector 778 | * remove unused css transform code from location in view 779 | * use BasicHttpRequest instead of EnclosingRequest 780 | * htmlunit passes the httponly cookie test 781 | * fix maven dependency of htmlunit driver on the support package 782 | * don't replace a platform specified to the add browser method, like the TODO says 783 | * Simulating submit operation for standard compliant drivers 784 | * Making sendKeys more backward compatible (because i18n tests) 785 | * Change buils to builds 786 | * Unignoring marionette tests passed after sendKeys rework 787 | * Fixing getSize operation broken by copy-paste from getLocation 788 | * Reworking sendKeys to send characters one by one, this is standard compliant behavior 789 | * Making switchTo().window more standard compliant 790 | * Making getLocation and getSize standard compliant 791 | * Making timeout setting methods standard compliant 792 | * Fixing "no such alert" error mapping 793 | * Making findElement(s) commands standard compliant (except for link text locators) 794 | * java: fix log string for RemoteTargetLocator#defaultContent 795 | * Update check to see if we are speaking to a W3C remote end point 796 | * specificationLevel is defined in http://w3c.github.io/webdriver/webdriver-spec.html#capabilities 797 | * use exception message. no method overload exists for log.severe 798 | * Upgrade HtmlUnit 2.18 799 | * ReflectionBackendDriverSupplier: two arguments Capabilities 800 | * HtmlUnitMouse: no need to .focus() 801 | * Fix HtmlUnitWebElement.getCssValue 802 | * AMO requires the max version be an actual release version number 803 | * Correcting IE driver build process to create executables runnable on Windows XP Fixes issue #936. 804 | * Improve comments and error message on scrolling_test#testScrollingAccountsForScrollbarWidths. 805 | * Java client side support for launch_app command of chromedriver: 806 | * Add "additionalCommands" support to DriverCommandExecutor. 807 | * Use directExecutor(). 808 | * Updating IE driver C++ code to use Visual Studio 2015. 809 | 810 | Grid: 811 | * Run grid tests using Buck. 812 | * removing '-debug' command line parameter for grid hub, it isn't used anywhere. 813 | * adding edge icon for grid 814 | 815 | 816 | v2.47.0 817 | ======= 818 | 819 | ** Java 7 is now requried, but you really should be on 8, since 7 is EOL ** 820 | 821 | 822 | WebDriver: 823 | * Supports native events for Firefox version 31 (immediately previous 824 | ESR). Native event support has been discontinued for versions of 825 | Firefox later than 33. Synthetic events tested on Firefox versions 31 826 | (immediately previous ESR), 38 (immediately previous release and current 827 | ESR), and 39 (current release). 828 | * Beta Alert.AuthenticateUsing api implementation added, beta testing with IE. 829 | * Added TakesScreenshot to WebElement. 830 | * (provided by Microsoft) Added language bindings for Microsoft Edge browser 831 | * Make it possible for users to override how the Lock is obtained with Firefox. 832 | * (provided by Ahmed Ashour) Added implementation of Alert for HtmlUnit driver. 833 | * (provided by Ahmed Ashour) Fixed findElementByXPath for HtmlUnit driver to 834 | work for XML pages. 835 | * (provided by Ahmed Ashour) Fixed HtmlUnit driver to allow for manipulating 836 | elements in SVG documents. 837 | * (provided by Ahmed Ashour) Fixed HtmlUnit driver so that deleteAllCookies 838 | deletes cookies only for the current domain, matching other implementations. 839 | * (provided by Tamás Buka) Created an overload to 840 | ExpectedConditions.frameToBeAvailableAndSwitchToIt support to index and 841 | WebElement so that WebDriverWait can use this mode to switch frames. 842 | * (provided by Joshua Bruning) Allow access to local profiler logs. An 843 | exception may be thrown if the WebDriver server does not recognize profiler 844 | logs. In this case, the user should be able to see the local profiler logs. 845 | * (provided by Sergey Tikhomirov) Changed visibility of isDecoratableList 846 | method of DefaultFieldDecorator to protected for use with custom PageFactory 847 | implementations. 848 | * Froze javascript.enabled property in Firefox profiles 849 | * FIXED #426: (provided by Anand Jayaram) Default the hub port to 4444, if no 850 | port was provided. 851 | * FIXED #638: Disabled HTTP Public Key Pinning (HPKP) when the 852 | webdriver_accept_untrusted_certs capability is set. As of Firefox 39, Firefox 853 | ignores certificate overrides if the domain's certificate is pinned. 854 | * FIXED #644: (provided by Brett Randall) Modified ErrorHandler to tolerate 855 | non-Number lineNumber, and also attempts to safely parse a non-Number Object 856 | if it receives a non-Number. If absent or non-numeric it now continues to 857 | build the StackTraceElement (instead of aborting that frame) and uses the 858 | conventional -1 for lineNumber. 859 | * FIXED #658: Disable reading list info panel in Firefox. 860 | 861 | Server: 862 | * Added a guard that prevents starting "IE instead of Opera" (or some other 863 | unwanted browser that obviously does not match the desired capabilities). 864 | Previously if a new session request is forwarded to a node it results in a 865 | driver instance creation in any case. For example, let's suppose a user 866 | starts a node with -browser browserName=opera option, and there is no 867 | operadriver in the classpath. Then the user requests a new remote driver with 868 | browserName=opera. The hub forwards the request to the node, and the node 869 | attempts to find the "best matching" driver provider. As far as opera is not 870 | available, it can start any other browser. Because "best matching" does not 871 | imply matching. The new guard prevents this unwanted behavior. 872 | 873 | Grid: 874 | * Added support to grid for Microsoft Edge driver 875 | * (provided by Dima Kovalenko) Sort Grid Proxies in order of least busy to 876 | busiest. This should prevent situation where one node is running multiple 877 | sessions while several nodes are completely idle. 878 | 879 | RC: 880 | * Removed start of Firefox with -silent option to prevent crash in Firefox. 881 | 882 | IDE: 883 | * FIXED #570: Add ability to record elements that do not have href attributes. 884 | 885 | v2.46.0 886 | ======= 887 | 888 | Important changes in this release: 889 | 890 | * Supports native events for Firefox version 31 (immediately previous 891 | ESR). Native event support has been discontinued for versions of 892 | Firefox later than 33. Synthetic events tested on Firefox versions 31 893 | (immediately previous ESR), 37 (immediately previous release), and 38 894 | (current release and current ESR). 895 | * Remove all support from both webdriver and RC for Presto-based 896 | Opera. Blink-based Opera is still supported! 897 | * Added beta Marionette driver (for Firefox OS and recent desktop 898 | releases). 899 | * Fixing critical selenium server error caused by a user registering a 900 | driver class compiled with a higher Java version than the server is 901 | running (eg: server runs with Java 7, but the driver is comopiled to 902 | target Java 8) 903 | * FirefoxDriver: now supported on OpenBSD (added by minusf@gmail.com) 904 | * HtmlUnitDriver: Updated to HtmlUnit 2.17. Requires Java 7 or above to work. 905 | 906 | Other notable changes: 907 | 908 | * Added ability to clear file input fields for Firefox. 909 | * Fix bug in Safari where Selenium updated the page under test in some 910 | circumstances. 911 | * HtmlUnit: do not disable mouse notifications when js is disabled, 912 | css is also related to this information (only partly implemented in 913 | HtmlUnit at the moment) 914 | * Updated htmlunitdriver to use htmlunit 2.17 915 | * Upgraded commons-exec from 1.1 to 1.3 916 | * Changed capability name from pageLoadingStrategy to pageLoadStrategy 917 | * FIX: Google Code issue #7749: Add Get/Set network connection 918 | commands to JsonHttpCommandHandler to be able to use commands in 919 | selenium grid. 920 | * Allow clients to specify TCP timeouts in the remote webdriver. 921 | * Allow the chrome binary passed in capabilities to have a higher 922 | priority than node configuration. 923 | * ChromeDriver: Added ability to pass whitelisted-ips option to the 924 | chromedriver 925 | * Implement lazy loopback detection. This provides ~10x speed 926 | improvement of selenium server startup. 927 | * Allow loading option descriptions from JSON file instead of 928 | Properties, allowing the server to manage order of options in the 929 | help message 930 | * SafariDriver: In SafariDriver's page script, copy window properties 931 | to goog.global. (provided by juangj@google.com) 932 | * Add a method toList that allows converting CompositeAction to JSON 933 | * FirefoxDriver: Skip the profile cleaning step when launching Firefox 934 | * Implement both integer (legacy) and string (standard) response status 935 | for the JSON wire protocol 936 | * FirefoxDriver: Disable https://wiki.mozilla.org/Advocacy/heartbeat 937 | Firefox 37+ feature in browser sessions started by FirefoxDriver. 938 | * FirefoxDriver: Added getters to FirefoxProfile to allow reading 939 | preset preference values 940 | * PageFactory: Changed default value of how part of @FindBy annotation 941 | from ID to UNSET, but treat them equivalent to ensure backward 942 | compatibility 943 | * PageFactory: Provide ability to use custom annotations. (Provided 944 | by Artem Koshelev) 945 | * Use DaemonExecutor from commons-exec instead of DefaultExecutor. 946 | Fixes Google Code issue 4734. (Provided by Richard Atkins) 947 | * FirefoxDriver and Java language bindings now handle both legacy and 948 | W3C specification dialects of element reference serialization in the 949 | JSON wire protocol. 950 | * FirefoxDriver: Don't force garbage collection in httpd.js for 951 | Firefox when connections are closed 952 | 953 | v2.45.0 954 | ======= 955 | 956 | Important changes in this release: 957 | 958 | * Native events in Firefox relied on an API that Mozilla no longer 959 | provides. As such, fall back to synthesized events on recent Firefox 960 | versions. 961 | 962 | Other changes: 963 | 964 | * When Selenium is unable to interact with an element, such as the 965 | case when an element is missing or disabled, this change will output 966 | exactly how Selenium is attempting to locate the element, such as 967 | the XPath or id of the element. This greatly speeds up 968 | troubleshooting issues, as the exception message clearly states what 969 | element is broken/missing for common problems like an 970 | ElementNotFoundException. 971 | * improve ByCssSelector#toString 972 | * Remove automatic installation of the SafariDriver in Java. 973 | * Complete Selenium Java Server support for Blink based Opera 974 | * Upgrading PhantomJS driver 975 | * Pull HttpClient implementation details out of HttpCommandExecutor. 976 | * Fix issue 8254: Extensions were incorrectly transferred between 977 | Windows client and Linux grid node, because ZipEntry had incorrect 978 | name with '\' as separators. 979 | * Adding capabilities and browser type for Opera Blink, and 980 | configuring tests to run in Opera Blink 981 | * Adding support for Blink-based Opera to Java binding 982 | * Adding Yosemite platform 983 | * Allowing to set an arbitrary platform capability even if it can't be 984 | converted to Platform enum. Non-standard platform values can cause 985 | matching issues on Grid, but they can be usable for third-party Grid 986 | implementations 987 | * Taking XML namespaces into account when searching by XPath. Checked 988 | to work in Firefox. Chrome supports namespaces out of the box. Need 989 | to update IE and Safari drivers to use the updated atom and test 990 | them carefully. 991 | 992 | v2.44.0 993 | ======= 994 | 995 | * Updating Native events to support Firefox 24, 31, 32 and 33 996 | * Update calls to deprecated guava methods. 997 | * Remove the deprecated DatabaseStorage interface. And callers. Note that the browser implementations may still have an implementation of these interfaces, but nothing in the main project implements it so we should be okay. 998 | * Bump the version of guava to 18 999 | * Bringing MarionetteConnection in line with the current marionette state (FF33) 1000 | * Add new tests for some wait conditions Also add the ExpectedConditionsTest to the test suite. 1001 | * Update FindBy annotations description 1002 | * Moving last part of browserlaunchers package from client to server 1003 | * Moving Proxies utility class to server 1004 | * Moving LauncherUtils to the server 1005 | * Moving utility method isScriptFile to the only class where it is needed 1006 | * Deleting tests for removed deprecated classes 1007 | * Moving more RC stuff to the server 1008 | * Moving tests too 1009 | * Moving proxy management stuff to the server, it is used in RC browser launchers only 1010 | * Using asMap as well as toMap to convert an object to Json 1011 | * Using JsonNull.INSTANCE instead of null 1012 | * Removing deprecated classes 1013 | * Log stacktrace. Adds more info on catch to be put into the log instead of just console. This will help debug issues when one has access to grid hub log but no access to console. 1014 | * Remove unused static import of Ignore.Driver.HTMLUNIT. 1015 | * Remove obsolete ChromeOptions code. 1016 | * trim() HTTP response content because some drivers send back a response containing trailing null bytes, which the GSON parser does not like. 1017 | * If JsonParser.parse() fails to parse a string obtained from a reflective call to a toJson() method, assume it is a primitive string. 1018 | This is the case for, e.g., FirefoxProfile.toJson(), which returns a base64-encoded zip file. That string likely contains at least one '/', which the Gson parser rejects. 1019 | * Fixing SessionId from json converter to better handle the case of null sessionId 1020 | * Fix the Eclipse config. The new gson dependency wasn't added. Now is :) Also switched a call in HtmlUnitWebElement to use guava rather than commons-lang since that's already included in the build configs for both Buck and CrazyFun. 1021 | * Get the Buck build working again. 1022 | * HtmlUnit: add text to the end of input fields. This makes the htmlunit driver work as the other drivers do. 1023 | * HtmlUnit: Fix getAttribute for dynamic properties. 1024 | * Enable Html5CapabilitiesTest for HtmlUnit 1025 | * Fix classpath for running tests in eclipse This allows the htmlunitdriver tests to run in Eclipse. 1026 | * Fixing broken CrossDomainRpcLoader 1027 | * Implementing autoconverion of platform in Capabilities on write 1028 | * Moving from org.json to gson because the license. Fixes issue 7956 1029 | * Revert "Bump the version of webbit to 0.4.15" 1030 | * Optimizing finding multiple elements by id by using CSS selectors if available. Fixes issue 7682 1031 | * Fixing WDBS compatibility with IE5. Fixes issue 7938 1032 | * HtmlUnitDriver: Initial code cleanup. 1033 | * Eclipse classpath fixes for htmlunit. 1034 | * Deflake a test. 1035 | 1036 | v2.43.1 1037 | ======= 1038 | 1039 | * Fixing socketlock bug with reusing the same profile multiple times 1040 | 1041 | v2.43.0 1042 | ======= 1043 | WebDriver: 1044 | 1045 | * Updating Native events to support Firefox 24, 31 and 32 1046 | * Add note on stale element checks and a WebElement represents a DOM element 1047 | * Upgrade third party dependency JavaScript-XPath to 0.1.12 1048 | * Fix example code: "using(-Chrome)DriverExecutable" 1049 | * Make event_firing_test.html pass in Firefox 24 ESR. 1050 | * Fix an error propagation bug when a command fails from bad inputs. 1051 | * Handle the case where a proxied element from PageFactory causes a FluentWait to timeout. 1052 | * Integrating the Microsoft Internet Explorer driver implementation 1053 | * Allow subclasses of HttpCommandExecutor to extend it at runtime. 1054 | * Handle the case where executeScript returns an HTMLDocument. 1055 | * IEDriver crashes in WaitUntilElementFocused() because of null pointer. Fixes issue #7577 1056 | * Deprecate the original RC interface in Selenium. 1057 | As part of Selenium 3.0, we shall be moving the original RC interface to a 1058 | legacy JAR that will be available as a separate download. As the first step 1059 | in this process, the original "Selenium" interface is being marked as 1060 | deprecated. 1061 | * Run FirefoxDriver tests with Buck. 1062 | * Bump timeout for tests since a suite is also a test. 1063 | * Run htmlunit-driver tests with Buck. 1064 | * Run the ignored tests printer with Buck. 1065 | * Get org.openqa.selenium.SmallTests building with Buck. 1066 | * Working around limitations in subpixel precision event handling. 1067 | 1068 | The bug/limitation where browser supports subpixel precision for elements but not for dispatched events was found in both modern Chrome (http://crbug.com/396380) and Firefox (?) browsers. 1069 | (IE doesn't seem to be affected: before and including IE9 - no subpixel for elements and events; from ie10 - subpixel is supported for both elements and events). 1070 | 1071 | This test was lucky so far (mostly?) and didn't hit this issue, until Chrome 37 that enabled subpixel text scaling by default. 1072 | 1073 | This change makes *sure* elements have subpixel coordinates (if only browser supports'em) and then it makes sure this test doesn't fail because of that (while still testing selenium atoms). 1074 | 1075 | While there, I moved asserts from event handlers into the normal test flow so jsunit can properly attribute assertion failures to specific test methods. 1076 | * Updating prebuilt libs for windows 1077 | * Re-add the rubyzip jar 1078 | * updating prebuilts for linux 1079 | * Updating to gecko 32 1080 | * Log formatter should be able to work with empty keys array. Fixes issue 7357 1081 | * Fixing infinite read from socket. Fixes issue 7814 1082 | * WDBS: safe check for window.localStorage 1083 | * Driver should operate cookies for the current frame, not the topmost one. Fixes issue 7799 in 1084 | Firefox 1085 | * Actually supporting promised Id for webdriver.WebElement. 1086 | * Adding more checks for JS functions removed from IE11. Fixes issue 7803 1087 | * Fixing use of deprecated API in httpclient 1088 | * Fixing use of deprecated API in guava 1089 | * Update Closure library to head and compiler to the latest release 1090 | * Implementing ability to use FirefoxDriver on a machine where localhost is not the first alias for 1091 | 127.0.0.1. Fixes issue 3280 1092 | * Handle null and empty paths the same as / 1093 | * fixing maven build, adding reference to jetty-rc-repacked-5 1094 | * adding pom and info on uploading jetty-repacked-5 to maven central 1095 | * Adding checks for JS functions removed from IE11. Fixes issue 7780 1096 | * Deleting what appears to be unused deps. 1097 | * Add more options to the Builder API (every common, settable capability should be covered). 1098 | * Require calling Builder.usingServer(url) to use a remote server. If this is not called, the 1099 | builder will attempt to create a client locally, throwing an error if it can't (e.g. for IE). 1100 | * Add browser specific constructors to simplify creating a client without the Builder. 1101 | Fixes issue 7593 1102 | * Updating json-cpp lib and replacing mongoose web server with civetweb. 1103 | * Safari is flaky. Reducing timeout to fail faster when we're going to fail. 1104 | * Catch driver start-up failures. 1105 | * Add explicit API for configuring log prefs rather than forcing users to rely on 1106 | magic capability strings. 1107 | * Clean up internal Firefox logging API. 1108 | * Use LogLevelMapping to convert JSON wire protocol name to Level instance. 1109 | * Make the jettyMaxThreads parameter actually be effective 1110 | * Fix NullPointerException when File#listFiles() returns null. Fixes issue #1934 1111 | * Making WDBS.start command a no-op if it was instantiated with an already started driver. Fixes issue 3993 1112 | * Handling possible exception in stringification of window.location. Fixes issue 3908 1113 | * Modified IE driver server to more closely follow W3C spec 1114 | 1115 | This commit includes a number of changes designed to bring the IE driver 1116 | into closer alignment with the W3C WebDriver specification. It provides 1117 | no functional changes to the driver, nor does it change any external- 1118 | facing API. The changes are: 1119 | * Changed webdriver::Server to examine the response from the newSession 1120 | command for the session ID rather than a two-stage process. The 1121 | webdriver::Server::DispatchCommand method now calls the 1122 | InitializeSession method directly when processing the newSession 1123 | command. 1124 | * Removed the now-obsolete webdriver::Server::CreateSession method. 1125 | * Added a Serialize/Deserialize method pair on the webdriver::Command 1126 | class (renaming the Populate method to Deserialize). 1127 | * Revamped the serialization of webdriver::Command to use 'name' instead 1128 | of 'command' for the command name. 1129 | * Added a session ID member to the webdriver::Command object. 1130 | * Modified the webdriver::Command object to no longer draw distinction 1131 | between parameters passed in as part of the URL substitution and those 1132 | passed in as part of the JSON payload in the body. 1133 | * Modified webdriver::CommandHandler::ExecuteInternal (and all subclass 1134 | implementations to use a single parameters map instead of the dual 1135 | URL tokens/JSON payload parameters maps used previously. 1136 | * Propagate webdriver_firefox_port preference to FirefoxDriver, was being ignored. Fixes issue 5172 1137 | * Adding a new selenium server option -logLongForm to log more details to the console. Fixes issue 6645 1138 | * Handling possible IllegalStateException while cleaning orphaned and timed out sessions. Fixes issue 6771 1139 | * Setting forwarded content for CommandListener afterCommand handler. Fixes issue 7443 1140 | * Fixing the list of extensions to search for an executable on Windows, and logging process startup 1141 | errors. Fixes issue 7514 1142 | * Setting layout.css.devPixelsPerPx to 1.0 if native events are enabled only. Fixes issue 7445 1143 | * BODY element is always shown/displayed. 1144 | related section in the W3C spec: 1145 | https://dvcs.w3.org/hg/webdriver/raw-file/default/webdriver-spec.html#determining-if-an-element-is-displayed 1146 | * Implementing switchToParentFrame support in atoms 1147 | * Setting HtmlUnit to emulate FF24 by default 1148 | * Updating HtmlUnit to 2.15 1149 | * Stop polluting the log with stacktraces. Fixes issue 7460 1150 | * Returning less specific platform info from firefox driver. Fixes issue 3354 1151 | * Adding driver info into TimeoutException thrown by WebDriverWait. Fixes issue 7429 1152 | * Implementing switchToParentFrame command for IE driver 1153 | * Adding URL endpoint for switchToParentFrame 1154 | 1155 | v2.42.2 1156 | ======= 1157 | WebDriver: 1158 | 1159 | * errorHandler needs to be instantiated. Fixing NPE with IEDriver Issue #7415 1160 | 1161 | v2.42.1 1162 | ======= 1163 | WebDriver: 1164 | 1165 | * resorting context endpoints, belong with mobile spec 1166 | * re-added Context endpoints to java client 1167 | * allow custom ErrorHandler for HTTPCommandExecutor 1168 | * fixing toJSON of chrome options where equal options become unequal. 1169 | 1170 | v2.42.0 1171 | ======= 1172 | WebDriver: 1173 | 1174 | * updating firefox prebuilts, thanks jleyba for fixing the build! 1175 | * Use PRUnichar for Gecko < 29, char16_t otherwise. 1176 | * Updating third_party/py/jython.jar to Jython 2.5.3 1177 | * Removing unused functions 1178 | * Implementing more straightforward way to send keyboard events in synthesized mode. Fixes typing into number inputs and rich text editors (like tinymce) 1179 | * Fixing interactions API in Firefox to be able to move mouse to elements in frames using native events. Fixes issue 7253 1180 | * Removing unused import 1181 | * Refactoring: moving an auxiliary class from the top level to inner class 1182 | * Removing outdated getValue command handler 1183 | * Change ClearElement to be a subclass of WebElementHandler instead of WebDriverHandler 1184 | * Removing outdated (unused) command constants 1185 | * Fixing clicks on invisible elements in HtmlUnitDriver broken by ElementNotVisibleException being a subclass of InvalidElementStateException 1186 | * Click after move with offset should use last mouse position 1187 | * Adding new interface methods to the stubs 1188 | * Preserve wrapped test function's string representation for Mocah's BDD interface. 1189 | * Fixing IE driver to allow JavaScript objects with property names with spaces 1190 | * Ignoring IE6-only test failure for CSS 1191 | * Bump the hmltunit version to 2.14 1192 | * Remove a class of our which replicates HTTP status codes already given meaningful names in the standard JRE. 1193 | * Updating version match for native libs in firefox plugin manifest file 1194 | * Updating native events dll for FF28 1195 | * Implement ability to load driver providers using ServiceLoader. A user can add new providers or override existing ones. To use this ability a user should: 1196 | * Refactoring the process of driver instances creation to use a new DriverProvider interface. DefaultDriverProvider wraps the current logic -- creating instances using reflection. This is a step to implement ability to load additional providers using ServiceLoader that can add new providers or override existing ones. 1197 | * Ruby: Fix for extensions whose install.rdf uses an attribute for em:id (issue 5978) 1198 | * fixes issue for locating newly installed chrome versions 1199 | * Fixing IE driver crash when clicking on link that opens a new window. 1200 | * Properly configure the http client in the presence of user credentials. 1201 | * java json converter chooses Long (Number base class). Fixing RemoteNetworkConnection 1202 | * SUPPORTS_BROWSER_CONNECTION was removed, missed a reference 1203 | * Clean up use deprecated methods & classes. 1204 | * ElementNotVisibleException is a type of InvalidElementStateException. 1205 | * Tweak messaging on SafariDriver client page to better reflect what is happening. Also added a log message pointing users to the toolbar button that opens the driver log page. 1206 | * Remove some no-op calls to deprecated functions. 1207 | * Pull the logic for converting Command/Response pairs to and frame HTTP request/response pairs into a common codec instead of duplicating the logic on the client and server. 1208 | * Change some tests to use Alert#accept() instead of Alert#dismiss() to get rid of alert dialogs. This is a workaround to ChromeDriver issue 764: 1209 | * When running tests against the remote server, ignore two tests that use required capabilities. The remote server only supports desired capabilities on new session requests. 1210 | * Update two tests to work when running with a remote server, where the original js error will be the root exception, but not necessarily the second error in the cause chain. 1211 | * Test if we need to skip cookie tests for lack of a valid domain name before calling a method that asserts we have a valid domain name. 1212 | * Convert HttpRequest/Response to POJOs; handle all conversion to and from HttpServletRequest/Response inside DriverServlet. 1213 | * Every command handler returns ResultType.SUCCESS and those handlers that return an actual value do so through a level of indirection. This commit changes command handlers to just return results directly to the caller, making it possible to delete a lot of unnecessary code. 1214 | * Move static resource serving code into DriverServlet. It is not part of the JSON wire protocol and including it in the command dispatcher complicates planned refactoring and other code cleanup. 1215 | * Mobile - Network Connection implementation for Java and Python. 1216 | * ChromeDriver 2.10.267517 binds to the loopback address instead of 0.0.0.0, so only attempt to connect using the loopback address. 1217 | * Code comment changes for wait() 1218 | * added task name to SCHEDULE_TASK event 1219 | * Eclipse compiler update for Java 8 support 1220 | * Updating naive user agent string checks to account for IE11 1221 | * Adding Windows 8.1 detection to Platform.extractFromSysProperty 1222 | * retry a test failure if there was a 'sauce' issue, like we exceeded the total time a test session is allowed to take. 1223 | * adding Windows 8.1 platform, so we can use it in saucelabs for IE11 testing 1224 | * Remove deprecated functions on webdriver.promise.Promise class * Use templates with webdriver.promise.Promise to improve types documentation. 1225 | * Loosen input type to webdriver.stacktrace.getStack_ to account for an rare condition in FF 28+ where the Error() constructor returns undefined (not sure what causes it, just know it happens) 1226 | * Add ability to save an abitrary base64 string as a screenshot from a WebDriverJS test running in a browser. 1227 | * When Firefox is configured to accept all SSL certs (which is the default behavior), we need to set a time offset to prevent Firefox from using HSTS (HTTP Strict Transport Security). If we don't do this, Firefox will pre-fetch the certs for sites that should always be accessed over HTTPS and allows Firefox to catch man-in-the-middle attacks. While this is A Good Thing for users, it prevents WebDriver from accepting self-signed certs for these domains (e.g. when they are accessed through a HTTPS proxy). 1228 | * Remove unnecessary dependency on bouncycastle. 1229 | * Making ChromeDriver directly implement the interfaces representing features it implements. 1230 | * Updating build process for Firefox native events components to use gecko 29 SDK 1231 | * Updating buck version to latest OSS release 1232 | * Use addEventListener if possible. Fixes issue 6680 1233 | * Packaging webdriven selenium (emulator) to client-combined jar. Fixes issue 7206 1234 | * Don't use system path separators when computing URL paths. 1235 | * Make Cookie serializable 1236 | * Ignoring a test for HtmlUnitDriver that can't be run due to HtmlUnit restrictions 1237 | * Allowing FindBy, FindBys, FindAll annotations on types 1238 | * Minor cleanup FirefoxBinary.java 1239 | * Adding Firefox native event version support to CHANGELOG 1240 | * Adding version number to the capabilities returned by htmlunitdriver. Fixes issue 7110 1241 | * Implementing augmentation indicator as an annotation 1242 | * Error handling for startSession is handled in the parent class now. 1243 | * Remove deprecated functions. 1244 | * Revert "Fixing Java 8 incompatibility caused by use of old jruby" because it breaks java 7 compatibility :( 1245 | * Fixing Java 8 incompatibility caused by use of old jruby 1246 | * Export logging API from main webdriver module. 1247 | * Setting pixel density to be independent from OS settings. Fixes issue 6112 1248 | 1249 | v2.41.0 1250 | ======= 1251 | WebDriver: 1252 | * Update to support native events for Firefox 28 (removed native event 1253 | support for Firefox 26). Native events are now supported for the 1254 | following Firefox versions: 1255 | 1256 | 17 (immediately previous ESR release) 1257 | 24 (current ESR release) 1258 | 27 (immediately previous release 1259 | 28 (current release) 1260 | 1261 | * Fixed capabilities to be sent properly encoded. For instance, 1262 | capabilities for mobile have copyright signs. 1263 | * Renamed some commands in the Firefox driver to prepare for Selenium 1264 | 3. This essentially means that we're mirroring the names of the 1265 | commands in the function names within the driver. Also implemented 1266 | handling a Selenium 3 style "sessionId" in a Command received by a 1267 | Selenium 2 server. 1268 | * Implemented support for switching context as described here: 1269 | http://code.google.com/p/selenium/source/browse/spec-draft.md?repo=mobile#133. 1270 | This feature will be used by mobile WebDriver users to switch 1271 | between different contexts like the native or the webview UI element 1272 | tree. The feature is end to end tested with latest Selendroid 1273 | snapshot version (6a126ab). In the langauge bindings, this is 1274 | implemented as a role-based interface. Subclasses of RemoteWEbDriver 1275 | that need this should extend TargetLocator and use covariant return 1276 | types to keep everything happy and sweet. 1277 | * Removed InternetExplorerDriver constructor that accepts 1278 | WindowsProxyManager as a parameter. Proxy management moved to 1279 | IEDriverServer and WindowsProxyManager is used for RC only now. 1280 | * Removed use of VK_ENTER since its been removed from Firefox. PUA 1281 | code uses VK_RETURN now like Mozilla Tools. 1282 | * Added switch to parent frame command to the wire protocol and API. 1283 | * Added httpOnly flag to Cookie JSON object. 1284 | * (on behalf of Tobias Lidskog): Added property for silencing 1285 | chromedriver. The Java property "webdriver.chrome.silentOutput" is 1286 | now used to set the default value for silent mode in chromedriver 1287 | using the ChromeDriverService class. This is analogous to the 1288 | existing system property for controlling verbose mode. 1289 | * (on behalf of Yi Zeng): Updated download link to googleapis.com 1290 | * Reduced the visibility of a deprecated class in the htmlunit driver. 1291 | * Removed deprecated FirefoxProfile.setProxyPreferences method. 1292 | * Removed deprecated ChromeOptions.setExperimentalOptions 1293 | * FIXED: 4843: (on behalf of Jonatan Kronqvist): Regard all modifier 1294 | keys in SingleKeyAction. An earlier commit added META, but COMMAND 1295 | and LEFT_* were left out as they were misinterpreted as aliases, 1296 | which they aren't (they onlyuse the enum definition to get the same 1297 | character code of the keys). 1298 | * FIXED: 5331: Added javadoc to JavascriptExecutor executeAsyncScript 1299 | about the default timeout. Also added some extra information on 1300 | troubleshooting common issues. 1301 | * FIXED: 7014: Fixed parameters parsing. 1302 | * FIXED: 7033: Fixed javadoc. 1303 | 1304 | WebDriverJS: 1305 | * FIXED: 7105: Properly bind "this" for beforeEach/it/afterEach in 1306 | mocha integration. 1307 | 1308 | Grid: 1309 | * Modified to ignore exceptions during the clean-up process if failing 1310 | to start a RemoteWebDriver instance. 1311 | * FIXED: 6770: Setting a timeout when Jetty has low resources to 1312 | prevent hub from hanging. 1313 | * FIXED: 6771: If a session times out and the browser was never 1314 | started, it should still be cleaned up on the hub side. 1315 | BeforeRelease should then be a no-op and not throw. 1316 | * FIXED: 6772: Added a configuration parameter to set the number of 1317 | threads Jetty uses. Default is -1, which implements the current 1318 | behavior (255 threads from Jetty's default settings) 1319 | * FIXED 6773: Consuming the request in all cases to properly release 1320 | resources. 1321 | * FIXED: 6811: Clean up immediately if starting a driver or session 1322 | errors in RemoteWebDriver. 1323 | * FIXED: 6878: Actually pass the response body to CommandListener 1324 | implementations, per the interface contract. 1325 | * FIXED: 7047: Updated a grid timeout property that seems to have been 1326 | overlooked in a previous cleanup. 1327 | 1328 | RC: 1329 | * Added lost quotes in JSON format (RC). 1330 | * Removed old version of Selenium RC emulation and leaving the new one 1331 | in place. 1332 | 1333 | v2.40.0 1334 | ======= 1335 | WebDriver: 1336 | * Update to support native events for Firefox 27 (removed native event 1337 | support for Firefox 25). 1338 | * Removed the iPhone driver. Also leaving the atoms available, so that 1339 | appium and iosdriver can use them. 1340 | * Deleted the client side of the AndroidDriver. Note that the atoms 1341 | are still left in place so that Selendroid can still be compiled. 1342 | * Make the RemoteWebDriver implement TakesScreenshot. There's only one 1343 | driver that doesn't implement the interface (the HtmUnitDriver) and 1344 | this is the most common cause for using the Augmenter, which isn't 1345 | very discoverable. 1346 | * Imported PhantomJSDriver 1.1.0, removing 1.0.4 (previous version). 1347 | * Implemented augmentation of previously augmented instances 1348 | * Fixed JdkAugmenter's inability to add interfaces that are already implemented 1349 | * Removed org.openqa.selenium.net.INetAddress, an unnecessary abstraction 1350 | around java.net.InetAddress. 1351 | * (on behalf of Tobias Lidskog) Add ability to send --silent flag to 1352 | chromedriver. 1353 | when building an inverted predicate. 1354 | * Implemented part of advanced user interactions using injected atoms 1355 | * Fixed HtmlUnitDriver to handle timeout exception on refresh. 1356 | * Implemented page load timeouts in Firefox without stopping page 1357 | loading. 1358 | * Implemented pageLoadingStrategy capability in Firefox. 1359 | * Migrated the WebDriverBackedSelenium to 1360 | com.thoughtworks.selenium.webdriven. This also leaves behind a 1361 | deprecated implementation of each of the key interfaces to ease 1362 | migration for users. 1363 | * Implemented proper error code for the case of invalid css selector 1364 | empty class name, and compound class name in atoms. 1365 | * Implemented alert and confirmation handling in WDBS (Java) 1366 | * Throw a more descriptive error when typing in certain types of input 1367 | elements in Chrome. Starting with Chrome 33, certain types of input 1368 | elements do not support the selection API (in fact, they throw when 1369 | you try to access the property). This prevents us from fully 1370 | simulating typing in the atoms. 1371 | * FIXED: 2397: (on behalf of TommyBeadle) Fixed exception handling 1372 | * FIXED: 3991: Add Keys.chord(Iterable) as a utility 1373 | method. 1374 | * FIXED: 4606: Stop web page loading after timeout. 1375 | * FIXED: 4843: (on behalf of Jonatan Kronqvist) Keys.META is now 1376 | regarded as modifier key in SingleKeyAction. Keys.META, Keys.COMMAND, 1377 | Keys.LEFT_ALT, Keys.LEFT_CONTROL and Keys.LEFT_SHIFT are now also 1378 | regarded as modifier keys in SingleKeyAction (because of their 1379 | aliases). 1380 | * FIXED: 5397: Disabled validation of cookies loaded from the browser. 1381 | If the browser could parse the cookie we are to be able to provide 1382 | this information to the user even if the cookie is inalid. 1383 | * FIXED: 5859: Implemented keyDownNative, keyUpNative and 1384 | keyPressNative in WDBS. These commands are implemented via Actions. 1385 | * FIXED: 6512: When the host is unknown, make the HtmlUnitDriver 1386 | return an error page. 1387 | * FIXED: 6657: Make the LoggingPreferences implement Serializable. 1388 | * FIXED: 6681: Preventing augmentation of subclasses of RemoteWebDriver. Fixes 1389 | * FIXED: 6830: (on behalf of GeorgeKlinich) Urlencoding result 1390 | returned by server implementation of WebDriverBackedSelenium. 1391 | * FIXED: 6834: Creating sesion cookie if expiry is not set. Fixes issue 6834 1392 | * FIXED: 6947: Script timeout should get reset even when async 1393 | callback is called synchronously. 1394 | 1395 | WebDriverJS: 1396 | * For consistency with Closure's new promise API, use thenCatch() 1397 | and thenFinally() instead of addCallback(), addErrback(), et al. 1398 | * ResultType.EXCEPTION and ResultType.ERROR are handled the exact same way, 1399 | so remove one of them and simplify some code. 1400 | * Treat promise.fulfill/reject as no-ops instead of throwing if the 1401 | promise has already been resolved. 1402 | * Added some utility functions to simplify working with arrays of 1403 | promises. 1404 | * FIXED: 6826: Add support for custom locators in webdriverjs. 1405 | 1406 | Grid: 1407 | * FIXED: 4589: Restrict the host where grid hub is listening if -host 1408 | option is specified. 1409 | * FIXED: 6445: Shorten string representation of capabilities in the 1410 | hub log and grid console. 1411 | 1412 | RC: 1413 | * Deprecated browser launchers for dead versions of firefox. 1414 | 1415 | v2.39.0 1416 | ======= 1417 | WebDriver: 1418 | * Update to support native events for Firefox 26. 1419 | * Removed server side of iPhone driver. 1420 | * Removed server-side of AndroidDriver and deprecating client side. 1421 | 1422 | WebDriverJS: 1423 | * FIXED: 6686: Changed Deferred#cancel() to silently no-op if the 1424 | deferred has already been resolved. 1425 | 1426 | v2.38.0 1427 | ======= 1428 | WebDriver: 1429 | * Update to support native events for Firefox 25. 1430 | * Updated httpclient and httpcore maven dependencies 1431 | * When moving the mouse relative to an element hidden in a parent's 1432 | overflow region, that element must first be scrolled into view 1433 | before the mouse move can be completed. 1434 | * Removed WindowsProxyManager from InternetExplorerDriver, proxy 1435 | management is implemented in IEDriverServer now. 1436 | * The logging level for the FirefoxDriver's native components can now 1437 | be set from the command line with the SELENIUM_LOG_LEVEL 1438 | environment variable. Valid values are ERROR, WARN, INFO, DEBUG, 1439 | and TRACE. If the value is not set, or an unrecognized value is 1440 | specified, the log level will be set to FATAL (which was the 1441 | previous behavior). 1442 | * Implemented ability to return Date object from executeScript 1443 | (Firefox only). 1444 | * Fixed Firefox returning the actual state of nativeEvents. 1445 | * Made it possible to switch the webdriver.xpi from the command line 1446 | using a system property. 1447 | * Removed hardcoded chromedriver version 1448 | * SafariDriver WebElement#getTagName() should return a lowercase 1449 | string. 1450 | * If ChromeDriver fails to start, suppress any exceptions from the 1451 | subsequent "clean-up" quit() so the error from start is not lost. 1452 | * Added an alternate, and Android-friendly, implementation of the 1453 | Augmenter that uses JDK interface proxies instead of cglib. This 1454 | new implementation is available as org.openqa.remote.JdkAugmenter; 1455 | the default Augmenter implementation still relies on cglib. 1456 | * Prevented an infinite loop when computing overflow state when the 1457 | documentElement has fixed position. 1458 | * Improveed logging for UnixProcess#destroy(). 1459 | * If an error is thrown while typing a key sequence, return that 1460 | error to the client. Prior to this change, the driver would 1461 | effectively hang. 1462 | * Do not attempt to generate a key event if the target element is no 1463 | longer attached to the DOM. nsIPressShell (which is used to 1464 | dispatch events) will throw a generic NS_UNEXPECTED_ERROR if we 1465 | fail to make this check. 1466 | * FIXED: 3107: (On behalf of Ross Patterson) Preventing possible NPE. 1467 | * FIXED: 4501: (On behalf of Robert Ambrus) Introduced a system 1468 | property org.openqa.jetty.SocketListener.bufferSize that allows to 1469 | set the size of the buffer Jetty uses for network communications. 1470 | * FIXED: 4698: Added missing expected conditions. 1471 | * FIXED: 5295: User defined element properties should be retrievable 1472 | with getAttribute. 1473 | * FIXED: 5900: Revamped the SafariDriver's internal networking. 1474 | * FIXED: 6294: Implemented ability to switch to a frame by id or name 1475 | in WDBS. 1476 | * FIXED: 6358: Disabled Content Security Policy in Firefox. 1477 | * FIXED: 6414: Fixed the way EventFiringWebDriver unwraps the 1478 | underlying driver. 1479 | * FIXED: 6431: Catch an exception thrown if the chrome executable is 1480 | not found and stop chromedriver before propagating it. 1481 | * FIXED: 6445: Shortened Firefox profile textual representation in 1482 | capabilities. 1483 | * FIXED: 6473: Implemented ability to pass --verbose option to 1484 | chromedriver. 1485 | 1486 | WebDriver JS: 1487 | * Always annotate errors for rejected promises 1488 | * FIXED: 6284: Omit x/y offsets from the mouseMove command instead of 1489 | defaulting to (0,0). 1490 | * FIXED: 6471: Correctly document the contract on 1491 | WebElement#getAttribute 1492 | * FIXED: 6612: On Unix, use the default IANA ephemeral port range if 1493 | unable to retrieve the current system's range. 1494 | * FIXED: 6617: Checking for Error.captureStackTrace is sufficient to 1495 | determine if an environment supports stack traces. This avoids 1496 | unnecessarily triggering debuggers configured to halt when an error 1497 | is thrown. 1498 | * FIXED: 6627: Safely rebuild chrome.Options from a partial JSON spec. 1499 | 1500 | Grid: 1501 | * FIXED: 6357: Added PhantomJS icon to the grid console. 1502 | * FIXED: 6392: Removed misleading log messages. 1503 | 1504 | RC: 1505 | * FIXED: 1666: Fixed typo in RegExp.test function name. 1506 | * FIXED: 1758: Ignoring closed windows when collecting attributes 1507 | from all windows (RC). 1508 | * FIXED: 2508: Fixed screenshot size calculation for quirks mode (RC) 1509 | * FIXED: 2845: Moved storedVars from test case level to test suite 1510 | level. 1511 | * FIXED: 3185: Fixed JSON converter (RC). 1512 | * FIXED: 3270: Fixed switch to window by var= locator (RC). 1513 | * FIXED: 5103: Fixed screenshooter in Firefox and Selenium RC, 1514 | limiting the size of the screenshot to pevent failures. 1515 | * FIXED: 6496: Enabled .htm and .xhtml extensions for test suites. 1516 | 1517 | v2.37.0 1518 | ======= 1519 | * Fix Firefox native event support on Linux for 23 & 24. 1520 | 1521 | v2.36.0 1522 | ======= 1523 | WebDriver: 1524 | * Updated Firefox native event components to support Firefox 24. 1525 | * Updated HtmlUnit to 2.13. 1526 | * Updated HttpClient to 4.3. 1527 | * Updated version of Guava to 15. 1528 | * Updated version of wgxpath. 1529 | * Return an empty string instead of "null" when the browserName and 1530 | version capabilities are not set. 1531 | * Stop propagation of the webdriver-evaluate custom event when 1532 | executing user supplied JavaScript. Without this change, the event 1533 | handler will trigger twice for async scripts, causing the driver to 1534 | attempt to evaluate the user script twice, leading to unpredictable 1535 | behavior. 1536 | * Added a new pause action to the interactions API. 1537 | * Improved support for using the HTML5 APIs through the remote 1538 | server by augmenting the session driver before attempting to 1539 | access HTML5 capabilities. If the driver does not support the 1540 | requested feature, throw an UnsupportedCommandException instead of 1541 | a ClassCastException. 1542 | * Implemented elementScrollBehavior capability in FirefoxDriver. 1543 | * Fixed getLocation to work on scrolled pages. 1544 | * Fixed autoscrolling for elements located in frames. 1545 | * Fixed drag-n-drop for elements in frames in Firefox with native 1546 | events 1547 | * Implemented SOCKS proxy support for FirefoxDriver 1548 | * Fixed support for SVG documents in the atoms. 1549 | * Fixed computing an element's container dimensions to account for 1550 | the scrollbar size when scrolling 1551 | * FIXED: 2670: Made subclasses of By serializable. 1552 | * FIXED: 6200: Pass command line arguments to the Selenium server 1553 | instead of to the JVM. 1554 | * FIXED: 6293: Added more informative error message. 1555 | * FIXED: 6346: Allow args to passed to the JVM using the jvmArgs 1556 | option. 1557 | 1558 | Grid: 1559 | * Added ability to fetch slotCounts from /grid/api/hub. The resource 1560 | looks like this: 1561 | 1562 | { "slotCounts": { "total": 20, "free": 8 } } 1563 | 1564 | * Added ability to fetch newSessionRequestCount from the 1565 | /grid/api/hub resource. 1566 | 1567 | 1568 | v2.35.0 1569 | ======= 1570 | WebDriver: 1571 | * Updated Firefox native event components to support Firefox 23. 1572 | * Removing deprecated interactions interfaces (Keyboard, Mouse, 1573 | TouchScreen). 1574 | * Updated operadriver to 1.4. 1575 | * Introduced ie.setProxyByServer capability to select how IE browser 1576 | proxy will be set up, either by old Java code using Windows 1577 | registry or inside IEDriverServer using WinINet methods. This 1578 | capability is marked as deprecated and will be removed in future 1579 | versions. In the future, IE proxy settings will be set up only by 1580 | IEDriverServer. Current default value of ie.setProxyByServer is 1581 | false so Windows registry will be used for IE proxy setup. 1582 | * Guarded around IE returning an empty object for the active element. 1583 | * FIXED: 6055: Fixing "invalid xpath" issue, actually invalid NS 1584 | resolver. 1585 | 1586 | WebDriver JS: 1587 | * FIXED: 6079: The parent process should not wait for spawned driver 1588 | service processes (chromedriver, phantomjs, etc.) 1589 | 1590 | v2.34.0 1591 | ======= 1592 | 1593 | WebDriver: 1594 | * Updated Firefox native event components to support Firefox 22. 1595 | * Update synthesized mouse implementation. Mouse moves are 1596 | implemented using nsIDOMWindowUtils. 1597 | * Finding libX11.so.6 in a slightly more intelligent way: Check that 1598 | dlopen actually succeeds, if not found in one of the fixed paths, 1599 | look in the LD_LIBRARY_PATH. 1600 | * Added ExpectedConditions to check for the visibility of all 1601 | WebElements in a List 1602 | * Updated the wgxpath library. 1603 | * Updated our copy of the Closure compiler and library to the most 1604 | recent versions. 1605 | * Updated the atoms library, including support for MS pointer events 1606 | and refinements to element visibility tests. 1607 | * Close all open connections when stopping the SafariDriver server. 1608 | * Fall back to a loopback address if the current machine does not 1609 | have an external IP address (as will be the case when there is no 1610 | internet connection). 1611 | * Remove sizzle dependency from the firefox driver. We only needed 1612 | this for versions of firefox prior to 3.5, which we no longer 1613 | support. 1614 | * Fixed Select.escapeQuotes method. 1615 | * Added SafariOptions and support for custom Safari extensions. 1616 | * Moved Mouse, Keyboard and TouchScreen to the interactions package 1617 | where they belong. This has the benefit of also making our build 1618 | files simpler once we delete the original versions which have been 1619 | deprecated. 1620 | * Deprecated the HasTouchScreen interface. 1621 | * Fixed condition in Select.select_by_index method to fix case when 1622 | selection is performed by index on a multiple select element. 1623 | * Implemented an alpha version of a Marionette (WebDriver implemented 1624 | natively in Firefox) driver. 1625 | * Deprecated IPhoneDriver. 1626 | * Added support for the HTML5 "hidden" attribute. If an element, or 1627 | ancestor, has hidden attribute make, it is not shown. 1628 | * FIXED: 2285: Allow setting default logLevel for standalone-server. 1629 | * FIXED: 5609: Adding the ability to redirect firefox process output 1630 | to file. 1631 | * FIXED: 5669: Add Driver#remote_status for the Ruby remote driver. 1632 | * FIXED: 5715: Adding toString method for the event firing 1633 | webelement. 1634 | 1635 | WebDriver JS: 1636 | * When capturing console output, guard against user scripts that 1637 | redefine the console global. 1638 | * Improved logging in the test client. 1639 | * Use goog.labs.testing.assertThat for the assertThat library. 1640 | * Improved stack trace handling 1641 | * Defined a webdriver.Capabilities class for webdriverjs. 1642 | * Added native ChromeDriver support to WebDriverJs. 1643 | * Mark discarded tasks as cancelled to prevent hanging on 1644 | asynchronously scheduled callbacks. 1645 | * Include the webdriverjs tests in the built npm package. Updated 1646 | the README with instructions for running the tests using npm. 1647 | * Add native PhantomJS support to webdriverjs. 1648 | 1649 | Grid: 1650 | * Update grid for change in behavior of WebDriver's new session 1651 | command. 1652 | * Fixed handling of JSON conversion errors at node. 1653 | * FIXED: 5942: Fix hang of hub when node machine is not available. 1654 | 1655 | RC: 1656 | * Fixed RC tests failing in Firefox beta builds. This has been fixed 1657 | in two ways: 1658 | 1659 | * Rely on the automation atoms where possible. 1660 | * Obtain the document and window from the element the event is 1661 | firing from. 1662 | 1663 | In the course of fixing this, all but one usage of "triggerEvent" 1664 | was replaced. Because of this, the method has been inlined to the last 1665 | call site. 1666 | * FIXED: 1646: UTF-8 encoded user-extensions.js support. 1667 | 1668 | 1669 | v2.33.0 1670 | ======= 1671 | 1672 | WebDriver: 1673 | * getText() ignores elements in the 1674 | * Bundled OperaDriver version bumped to 1.3. 1675 | * Added a FindAll annotation for the PageFactory to use. 1676 | * Added a toString() implementation to Color. 1677 | * Deleted the Selenium-backed WebDriver. 1678 | * FIXED: 2218: IE >=9 versions triggerMouseEvent like other 1679 | browsers. 1680 | * FIXED: 2610: Implementing ability to specify path to the chrome 1681 | executable in the node configuration file using chrome_binary 1682 | capability. 1683 | * FIXED: 2685: Increasing port range for Firefox to chose from when 1684 | starting. 1685 | * FIXED: 4790: Improvements made to Firefox startup in highly 1686 | concurrent environments. 1687 | * FIXED: 5045: Added support for fetching logs from SafariDriver. 1688 | * FIXED: 5652: Adding unhandled alert text to the exception message. 1689 | * Added LogType.PERFORMANCE, supported in chromedriver2 0.9+. 1690 | 1691 | WebDriver JS: 1692 | * FIXED: 5511: Implement 1693 | driver.manage().timeouts().pageLoadTimeout(ms) for WebDriverJs. 1694 | * FIXED: 5632: It's now possible to create a new session with 1695 | WebDriverJs when running in a browser. 1696 | * Add a WebDriverJs client to the SafariDriver's logging window so 1697 | it's possible to use WebDriver from the devtools REPL on that 1698 | page. 1699 | 1700 | Grid: 1701 | 1702 | * Making "beta" console the default one, it's time to get out of 1703 | beta status 1704 | * Old console is now available at /grid/old/console/ 1705 | * Addressed memory leaks caused by per-session logging. 1706 | * FIXED: 3001: Making Selenium the default protocol if a node was 1707 | started with "-role rc" option. 1708 | 1709 | RC: 1710 | * FIXED: 3636: selenium.fireEvent works with the webdriver-backed 1711 | selenium and IE. 1712 | 1713 | v2.32.0 1714 | ======= 1715 | 1716 | WebDriver: 1717 | This release supports Firefox verions: 10esr, 17esr, 19, 20 1718 | 1719 | * Let WindowsUtils.killPID() kill the whole process tree 1720 | * Implementing support for implicit "submit" button type in 1721 | HtmlUnitDriver. 1722 | * bug fix for python hang with 302 response 1723 | * Adding better support for SVG within Firefox. Has better scrolling 1724 | to element and allows JavaScript execution 1725 | * Fixing case of "no active element" for HtmlUnitDriver 1726 | * WindowsUtils.kill() fix on Windows 8 1727 | * Updating HtmlUnit to 2.12 (and cssparser to 0.9.9) 1728 | * Fixing illegal negative timeout values for HtmlUnitDriver, zero 1729 | means infinite wait 1730 | * Implementing pageLoadTimeout in HtmlUnitDriver 1731 | * Allow users to specify a custom location for Safari's data 1732 | directory using the "safari.dataDir" capability. 1733 | * Fix for using DesiredCapabilities with WebDriverBackedSelenium 1734 | * PhantomJS Driver bindings updated to 1.0.3 1735 | * Minimize the number of third party libraries used by the very 1736 | heart of the remote webdriver server. 1737 | * fix issue where server was appending '?null' to all forwarded 1738 | requests 1739 | * Issues fixed: 5293, 4902, 5283, 5278 1740 | 1741 | v2.31.0 1742 | ======= 1743 | (summary not created, check version history logs) 1744 | 1745 | v2.30.0 1746 | ======= 1747 | 1748 | WebDriver: 1749 | * Fixing a bug introduced by a change in how we get already logged 1750 | messages from the console service in firefox. This allows us to 1751 | function with firefox 19 1752 | * FIXED: 1181: Improved loopback detection 1753 | * FIXED: 1627: Implementing ability to use auto proxy in 1754 | HtmlUnitDriver. 1755 | * FIXED: 3652: moveToElement with offset should consider 0 as a 1756 | valid value, not as "undefined". 1757 | * FIXED: 3868: Better ephemeral port range selection. 1758 | * FIXED: 4107: Added prebuilt version of the SafariDriver extension 1759 | to the client jar. 1760 | * FIXED: 4821: WebDriverBackedSelenium works when added to project 1761 | via maven. 1762 | * FIXED: 4940, 5075: Added iceweasel to list of firefox variants. 1763 | * FIXED: 5022: Text node with overflow:hidden and height/width 0 to 1764 | not be visible since we cant see them. 1765 | * FIXED: 5030: Only send files to upload, not directories. 1766 | * FIXED: 5079: FluentWait.until(Predicate) method does not propagate 1767 | predicate message. 1768 | * FIXED: 5109: We should show elements visible if there is a pixel 1769 | visible. 1770 | * Semi-private change: Changes in the Coordinate class. 1771 | 1772 | JS: 1773 | * Update WebDriverJS to support parallel flows. This change renames 1774 | several low-level classes and functions in the promise module: 1775 | 1776 | promise.Application -> promise.ControlFlow 1777 | #schedule(string, function) -> #execute(function, [string]) 1778 | #scheduleTimeout(string, number) -> #timeout(number, [string]) 1779 | #scheduleWait(string, function, number, [string]) -> #wait(function, number, [string]) 1780 | 1781 | The old schedule* functions are still present, but will print a 1782 | warning message if called. They will be removed in 2.31. 1783 | 1784 | RC: 1785 | * Added ability to use relative path to an -htmlSuite file. 1786 | * FIXED: 3498: Proxy based browsers are back to normal on HTTPS 1787 | * FIXED: 5113: Implementing GET requests support for RC protocol. 1788 | 1789 | 1790 | v2.29.0 1791 | ======= 1792 | 1793 | WebDriver: 1794 | * Firefox 18 support. 1795 | * IEDriver supports "requireWindowFocus" desired capability. When 1796 | using this and native events, the IE driver will demand focus and 1797 | user interactions will use SendInput() for simulating user 1798 | interactions. Note that this will mean you MUST NOT use the 1799 | machine running IE for anything else as the tests are running. 1800 | * Use the "webdriver.remote.shorten_log_messages" system property to 1801 | reduce the verboseness of ouput from executeScript and 1802 | executeAsyncScript when using the RemoteWebDriver. 1803 | * Switching HtmlUnitDriver default from FIREFOX_3_6 to FIREFOX_10 1804 | * SafariDriverExtension should restore Safari's previous settings on 1805 | shutdown. 1806 | * Bundled version of PhantomJSDriver bumped to 1.0.1 1807 | * Updated the version of guava-libraries used to 14. 1808 | * Updated HtmlUnit to 2.11 1809 | * Deprecated XPathLookupException in favour of 1810 | InvalidSelectorException 1811 | * FIXED: 3602: Changing IE view port calculations to allow for 1812 | always-present vertical scroll bar, and to test for horizontal 1813 | scroll bar and adjust as required by page content. 1814 | * FIXED: 4576: self registering proxy now check for user specified 1815 | proxy id. 1816 | * FIXED: 5010: icons in chrome newtab now correctly identified as 1817 | being shown. 1818 | 1819 | RC: 1820 | * FIXED: 4818: Make sure that each generated SSL cert has a unique 1821 | ID associated with it. 1822 | 1823 | Project: 1824 | * Moved to git. Most obvious in revision number in our exceptions. 1825 | 1826 | 1827 | v2.28.0 1828 | ======= 1829 | 1830 | WebDriver: 1831 | * "null" can now be passed to executeScript 1832 | * .Net: Corrected FileUtilities.FindFile() to correctly return the 1833 | current directory if the specified file is located there. 1834 | * .Net: Introduces the Updating the CustomFinderType property to the 1835 | .NET FindsByAttribute. This allows use of custom By subclasses in 1836 | the PageFactory. The custom finder must be a subclass of By, and 1837 | it must expose a public constructor that takes a string argument. 1838 | * SafariDriver: better attempts to catch native dialogs from user 1839 | defined onbeforeunload handlers. 1840 | * Updating HtmlUnit to 2.11 1841 | * Added the PhantomJS bindings to the release. You'll still need to 1842 | download PhantomJS itself separately. 1843 | 1844 | RC: 1845 | * Implemented getAllWindowNames in WebDriverBackedSelenium 1846 | * Implemented openWindow in WebDriverBackedSelenium to allow opening 1847 | relative URLs 1848 | 1849 | 1850 | v2.27.0 1851 | ======= 1852 | 1853 | WebDriver: 1854 | * Added support for native events for Firefox 17. 1855 | * Added support for ghostdriver (PhantomJS) 1856 | * Adding new capability "enableElementCacheCleanup" to the IE 1857 | driver. When set to true, the IE driver will clean the 1858 | known-element cache of invalid elements after every page 1859 | load. This is intended to keep memory usage down and improve 1860 | performance. However, it is an intrusive change, so this 1861 | capability is provided temporarily to allow disabling this 1862 | behavior if problems arise. The default of this new capability is 1863 | "true", meaning this behavior is turned on by default. 1864 | * Added shift key handling to the synthetic keyboard actions. 1865 | * Modifying scroll behavior in IE driver SendKeysCommandHandler to 1866 | call Element::GetLocationOnceScrolledIntoView() instead of calling 1867 | the DOM scrollIntoView() function. Should result in less page 1868 | scrolling during test runs. 1869 | * Checking if CSS transforms on elements, or their parents, are 1870 | hiding them and therefore returning they arent visible. 1871 | * Add not, refreshed, invisibilityOfElementWithText to 1872 | ExpectedConditions. 1873 | * Added support for new IE10 pointer events. 1874 | * FIXED: 1543: Allowing equal sign in a cookie value. 1875 | * FIXED: 2103, 3508: Modified to no longer hang on alerts triggered 1876 | by onchange of