2013-10-30 20 views
8

khai nàyLàm thế nào để sử dụng một firefox đã mở để thử nghiệm trong Selenium

WebDriver driver = new FirefoxDriver(); 

luôn mở ra một cửa sổ thể hiện mới của Firefox. Nó không sử dụng firefox đã được mở.

Có ai cho tôi biết cách sử dụng firefox đã được mở để thử nghiệm thay vì mở một cái mới không?

+4

Không, nó không thể được. Lấy làm tiếc. –

+0

điều đó là có thể. Vui lòng xem câu trả lời của tôi bên dưới và cũng truy cập vào liên kết này http://binaryclips.com/2015/08/25/selenium-webdriver-in-c-how-to-use-the-existing-window-of-chrome-browser/ – joinsaad

Trả lời

3

Hãy cẩn thận với điều đó, vì trường hợp trình điều khiển gặp trục trặc, tất cả các trường hợp cần thực hiện sau đó sẽ bị ảnh hưởng vì chúng đang sử dụng cùng trình điều khiển, bạn sẽ là chia sẻ cookie, và có lẽ các phiên đã được mở trước đó, v.v.

Giải pháp mạnh mẽ hơn là tạo WebDriver mới cho từng trường hợp thử nghiệm vì làm như vậy bạn đang làm cho tất cả các trường hợp thử nghiệm của bạn ít phụ thuộc vào người khác.

Nếu lý do thúc đẩy bạn là thời gian mỗi WebDriver cần được tạo, có lẽ bạn có thể bắt đầu suy nghĩ về các trường hợp thử nghiệm chạy song song ví dụ với TestNG.

Cảm ơn

0

Bạn nên khởi tạo trình quản trị web của mình chỉ một lần, khi thực hiện kiểm tra và sau đó chuyển nó làm đối số cho các lớp khác trong hàm tạo. Một cái gì đó như thế này:

public class Test { 

WebDriver driver = new FirefoxDriver(); 
@Test 
public void testHomePage() { 
    HomePage hp = new HomePage(driver); 
    //code here } 
} 


public class HomePage{ 
private static WebDriver driver; 

public HomePage(WebDriver driver) { 
    this.driver = driver;} 
} 
0

Trong Java, khi bạn nói new một đối tượng mới được khởi tạo. Đối với WebDriver, mỗi new là một cửa sổ trình duyệt mới.

Nếu bạn muốn sử dụng cùng một trình duyệt, hãy sử dụng cùng một đối tượng driver.

driver.get("URL PATH"); 

Điều này sẽ chuyển đến Url mới bằng trình duyệt đã mở.

+0

Có, trong java "mới" có nghĩa là đối tượng mới được khởi tạo. Nhưng "WebDriver mới" chỉ có nghĩa là đối tượng mới của lớp "WebDriver" và CÓ THỂ KHÔNG giống với "cửa sổ trình duyệt mới". – Raigedas

9

Sử dụng trình điều khiển web từ xa như thế này.

System.Uri uri = new System.Uri("http://localhost:7055/hub"); 
WebDriver = new RemoteWebDriver(uri, DesiredCapabilities.Firefox()); 

nó sẽ sử dụng trình duyệt Firefox đã mở. bạn có thể xem chi tiết về cách tiếp cận này trong bài đăng trên blog này.

http://www.binaryclips.com/2016/03/selenium-web-driver-in-c-how-to.html

+0

Tôi thấy rằng câu trả lời của tôi được upvoted nhiều lần hơn câu trả lời thực tế. Câu trả lời của tôi có thể được đánh dấu là câu trả lời thực tế ngay bây giờ không. ? – joinsaad

+0

yêu cầu OP trực tiếp xem xét thay đổi nó (nhưng lưu ý rằng câu trả lời được chấp nhận và bình chọn cao nhất không giống nhau). –

+0

bạn có biết tương đương python không? – user3042850

0

Ví dụ Java. Trước tiên, bạn cần có máy chủ Selenium chạy.

java -jar C:\selenium-server-standalone-2.53.0.jar 

Để bắt đầu một phiên làm việc mới (kịch bản đầu tiên):

WebDriver driver = new RemoteWebDriver(
         new URL("http://localhost:4444/wd/hub"), 
         DesiredCapabilities.firefox()); 

Sau đó, để tái sử dụng (đính kèm) mà phiên (kịch bản thứ hai):

WebDriver driver = new RemoteWebDriver(
         new URL("http://localhost:7055/hub"), 
         DesiredCapabilities.firefox()); 

Thông báo số cổng khác nhau .

0

Cách tốt nhất để làm điều đó là, mở rộng RemoteWebDriver và ghi đè startSession phương pháp luận:

bước:

  1. Bắt đầu selen máy chủ sử dụng java -jar Command- selen-server-độc-3.xx jar. Theo mặc định bắt đầu phiên của bạn trên cổng 4444.

  2. mở url http://localhost:4444/wd/hub/static/resource/hub.html

  3. bắt đầu mới phiên nhấp firefox trên tạo nút phiên và chọn trình duyệt firefox.

  4. Khi phiên bắt đầu, hãy sao chép id phiên và dán vào tệp thuộc tính hoặc tệp xml mà bạn muốn.

  5. đọc phiên id hình thành các tập tin mà bạn đã lưu trong phương pháp sau đây

    @Override 
        protected void startSession(Capabilities desiredCapabilities) { 
        String sid = getSessionIDFromPropertyFile(); 
        if (sid != null) { 
        setSessionId(sid); 
        try { 
         getCurrentUrl(); 
        } catch (WebDriverException e) { 
         // session is not valid 
         sid = null; 
        } 
        } 
        if (sid == null) { 
        super.startSession(desiredCapabilities); 
        saveSessionIdToSomeStorage(getSessionId().toString()); 
        } 
    } 
    
Các vấn đề liên quan