2013-07-05 29 views
12

Kịch bản: - Tôi cũng có một trang có Trình chỉnh sửa văn bản iFrame và một nút trong trang. - Tôi chuyển từ khung chính sang khung nội dung iFrame để đọc từ trình soạn thảo văn bản - Sau khi đọc từ phần nội dung của Trình chỉnh sửa văn bản, tôi muốn nhấp vào nút trong khung chính của trang. - Đối với điều này, tôi đã cố gắng chuyển về khung chính từ iFrame bằng cách sử dụng câu lệnh sau: webDriver.SwitchTo(). DefaultContent(); - Nhưng tôi vẫn không thể tìm thấy phần tử nút nằm trong khung chính.Chuyển sang Khung cha mẹ từ iFrame và tìm phần tử trong khung Phụ huynh bằng Trình quản lý web Selenium. C#

Tôi đánh giá cao sự trợ giúp của bạn! Cảm ơn

+0

Chúng ta có thể nhìn thấy mã HTML của IFrame – Arran

Trả lời

13

Thats for guys response của bạn. Nó được giải quyết!

Giải pháp:

  • Trong khi tôi sử dụng webDriver.SwitchTo().DefaultContent(); nó chuyển mạch webDriver với hầu hết các cửa sổ trên cùng của trang. [Trước đây tôi đang tìm kiếm phần tử nút trong cửa sổ này và do đó không thể tìm thấy nút đó khi đang ngồi trong khung chính của trang]

  • Sau khi chuyển sang cửa sổ chính, tôi đã chuyển lại webDriver một lần nữa vào khung chính của trang. Khung chính này có phần tử nút. Vì vậy, tôi đã có thể tìm thấy phần tử nút. Và điều này đã khắc phục vấn đề!

Vì vậy, các mã cuối cùng không có webDriver.SwitchTo().DefaultContent(); nhưng có những điều sau đây vào chỗ của nó:

_webDriver.SwitchTo().Window(windowHandle); 
    _webDriver.SwitchTo().Frame("mainFrame"); 

Lưu ý: windowHandle trong đoạn code trên là handle của hầu hết các cửa sổ trên cùng của trang. Tôi đoán giá trị của nó có thể thay đổi tùy theo trình duyệt, không chắc chắn.

6

tôi đã phải vật lộn với một vấn đề tương tự và thấy rằng tôi có thể chuyển đổi qua lại bằng cách Window Handle:

string currentWindow = Driver.CurrentWindowHandle; 
// switch to frame and do stuff.. 
Driver.SwitchTo().Window(currentWindow); // switch back 
2

Trong trường hợp của tôi đoạn mã sau làm việc tốt:

driver.switchTo().parentFrame();