Nếu bạn muốn thiết lập cố định chiều rộng và chiều cao của trình duyệt khi chạy automation test hoặc test Responsive, thì Selenium WebDriver hỗ trợ thay đổi kích cỡ (org.openqa.selenium.Dimension).
Khởi tạo một biến size với chiều rộng và chiều cao như trong phần source demo:
Dimension size = new Dimension(1024,768);
Thay đổi kích thước cửa sổ hiện tại với tỉ lệ (1024,768), kích thước ở đây do bạn tự điều chỉnh theo ý muốn
driver.manage().window().setSize(size);
Thay đổi kích thước cửa sổ hiện tại với tỉ lệ lớn nhất (kích thước sẽ tùy thuộc vào độ phân giải của máy hiện tại)
driver.manage().window().maximize();
Source demo:
[code language=”java” autolinks=”true”]
import org.openqa.selenium.Dimension;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.AfterTest;
import org.testng.annotations.Test;
public class browserSize {
WebDriver driver = new FirefoxDriver();
@Test
public void openBrowserwithGivenDimension1() {
driver.navigate().to(“http://google.com.vn”);
Dimension size = new Dimension(1024, 768);
driver.manage().window().setSize(size);
}
@Test
public void openBrowserwithGivenDimension2() {
driver.navigate().to(“http://google.com.vn”);
Dimension size = new Dimension(1280, 768);
driver.manage().window().setSize(size);
}
@Test
public void openBrowserwithGivenDimension3() {
driver.navigate().to(“http://google.com.vn”);
driver.manage().window().maximize();
}
@AfterTest
public void close() {
driver.quit();
}
}
[/code]
Video demo:
https://www.youtube.com/watch?v=sab5w_WO_14&feature=youtu.be
Hi anh,
cho e hỏi xíu hj
Em làm theo hướng dẫn trong bài, sau khi run thì báo lỗi sau:
-The path to the driver executable must be set by the webdriver.chrome.driver system property….
Em thêm dòng code sau vào một phương thức thì run ok:
-System.setProperty(“webdriver.chrome.driver”,
“\\SeleniumBasic\\lib\\chromedriver.exe”);
Nếu muốn sử dụng lại biến “driver” trong nhìu phương thức(giống code của anh) mà không cần thêm dòng code trên thì làm sao ah?
Thanks anh!!
Em thêm đoạn code khởi tạo driver vào trong BeforeClass nhé, nó sẽ khởi tạo driver trước mỗi testcase.
Example:
@BeforeClass(){
public void beforeClass() {
// Firefox
driver = new FirefoxDriver();
// or Chrome
//System.setProperty("webdriver.chrome.driver", "\\SeleniumBasic\\lib\\chromedriver.exe”);
//driver = new ChromeDriver();
}
Chào bạn,
Mình cũng có cùng thắc mắc với bạn Ngọc Vân và cũng chưa hiểu lắm cách xử lí, nhờ bạn giải thích giúp:
public class SettingDimension {
@Test
public void openDimension1() {
System.setProperty(“webdriver.gecko.driver”, “D://JAVA SOURCES/SeleniumGecko/geckodriver.exe”);
WebDriver driver = new FirefoxDriver();
driver.navigate().to(“https://zing.vn”);
Dimension size_1 = new Dimension(1024, 768);
driver.manage().window().setSize(size_1);
//driver.quit();
}
@Test
public void openDimension2() {
System.setProperty(“webdriver.gecko.driver”, “D://JAVA SOURCES/SeleniumGecko/geckodriver.exe”);
WebDriver driver = new FirefoxDriver();
driver.navigate().to(“https://vnexpress.net”);
Dimension size_2 = new Dimension(1280, 768);
driver.manage().window().setSize(size_2);
//driver.quit();
}
—————————-
Mỗi khi mình chạy một method openDimension() thì mình đều phải khai báo dòng này:
System.setProperty(“webdriver.gecko.driver”, “D://JAVA SOURCES/SeleniumGecko/geckodriver.exe”);
1. Vậy giờ minh muốn chỉ khai báo một lần và khi mình tạo nhiều method: openDimension() mình không cần khai báo lại nữa
2. Ở đoạn code trên mở 2 page. sau khi mở xong mình muốn đóng 2 page lại thì mình nên code như thế nào (mình không muốn driver.quit() trong từng method riêng lẻ)
3.Mình thấy có nhiều code tutorial hướng dẫn có @Before, @Test, @After. bạn có thể giải thích giúp mình ý nghĩa của @Before, @After được không?
Chào bạn,
Bạn đưa phần khởi tạo driver vào @BeforeTest, phần quit trình duyệt vào @AfterTest nhé.
@BeforeTest: pre-condition cho mỗi testcase
@AfterTest: post-condition cho mỗi testcase
Đoạn code trên viết lại như sau:
public class SettingDimension {
WebDriver driver;
@BeforeTest
public void init(){
System.setProperty(“webdriver.gecko.driver”, “D://JAVA SOURCES/SeleniumGecko/geckodriver.exe”);
driver = new FirefoxDriver();
}
@Test
public void openDimension1() {
driver.navigate().to(“https://zing.vn”);
Dimension size_1 = new Dimension(1024, 768);
driver.manage().window().setSize(size_1);
}
@Test
public void openDimension2() {
driver.navigate().to(“https://vnexpress.net”);
Dimension size_2 = new Dimension(1280, 768);
driver.manage().window().setSize(size_2);
}
@AfterTest
public void clear() {
driver.quit();
}
Cám ơn bạn rất nhiều,
Mình đã hiểu và làm được, mình đang đọc dần dần các bài hướng dẫn của bạn nên chưa nắm hết thông tin trên blog của ban, mình có nghe nói về test automation framework. Hy vọng bạn có bài viết về chủ đề này, cám ơn bạn rất nhiều
Về automation framework thì bạn có thể tham khảo 1 số sau:
– Type: Modular/ Data driven/ Keyword/ Hybrid (daominhdam.wordpress.com/2017/01/15/exp-08-nhung-loai-framework-cho-kiem-thu-tu-dong)
– Testing framework: Junit/ TestNG/ NUnit/ xUnit/ Jasmine/… (Cái này lên mạng search rất nhiều tài liệu)
– Tool: Selenium/ Cucumber/ Specflow/ TestComplete/Katalon (VN)/.. (Open source + commercial)
Bạn chọn 1 trong những loại trên kết hợp với nhau để build lên cái mình cần nhé!