2011-01-14 22 views

Trả lời

1

giải pháp của bạn thường được tìm thấy bằng cách nhìn vào mã JavaScript ..

Một tùy chọn bạn luôn luôn có được để đưa vào giá trị và tự kích hoạt các sự kiện onchange thực tế từ mã.

Có sự cố mở về điều này link text Sự cố với Windows FireFox không hoạt động và ngăn OnChange được kích hoạt.

Hãy thử điều này trước khi sử dụng typeKeys lệnh:

selenium.selectWindow(null); 
+0

Tôi đang sử dụng IDE. Đây là những gì tôi đã làm. [#Executing: | getEval | selenium.selectWindow (null) || ] Không hoạt động. Lỗi: selenium.selectWindow không phải là chức năng –

+0

Tôi thường chỉ làm việc với Selenium RC và tôi không chắc chắn nó thậm chí có thể giải quyết một số vấn đề với IDE .. Bạn nên cập nhật câu hỏi của bạn với thông tin đó – StefanE

3

Nếu bạn đang sử dụng Selenium 1.x, có một lệnh fireEvent mà bạn có thể sử dụng để tự kích hoạt sự kiện onChange sau khi nhập vào giá trị. Có lẽ điều đó sẽ giải quyết vấn đề của bạn?

1

này đã làm việc cho tôi trong IDE làm 3 lệnh sau để

Typekeys targetID input 
FireEvent targetID focus 
Type  targetID input 

Nguồn trông như thế này (đầu vào là thư r)

<tr> 
<td>typeKeys</td> 
<td>//form/input</td> 
<td>r</td> 
</tr> 
<tr> 
<td>fireEvent</td> 
<td>//form/input</td> 
<td>focus</td> 
<tr> 
<td>fireEvent</td> 
<td>//form/input</td> 
<td>focus</td> 
</tr> 
<tr> 
<td>type</td> 
<td>//form/input</td> 
<td>r</td> 
</tr> 
</tr> 
<tr> 
<td>type</td> 
<td>//form/input</td> 
<td>r</td> 
</tr> 
8

Để kích hoạt các sự kiện onchange, hãy thử thêm lệnh này vào Selenium IDE:

fireEvent targetID blur

+0

Điều này cần câu trả lời được chấp nhận (IMHO). Đây chính xác là * những gì tôi cần! Ngoài ra, trong trường hợp của tôi, điều này đã được sử dụng với 'sendKeys' thay vì' type'. Cảm ơn rất nhiều vì điều này, @trex. – OscuroAA

5

Firefox có một số bug ngăn không cho một số sự kiện được thực hiện trong khi cửa sổ trình duyệt bị mất tập trung. Điều này có thể là một vấn đề khi bạn chạy thử nghiệm tự động hóa của mình - điều này có thể đang nhập ngay cả khi cửa sổ bị mất tiêu điểm.

Để khắc phục vấn đề này, tôi kích hoạt sự kiện thay đổi "bằng tay", tiêm javascript vào bài kiểm tra của tôi .:

//suppose "element" is an input field 
element.sendKeys("value"); 
JavascriptExecutor jsExecutor = (JavascriptExecutor) driver; 
jsExecutor.executeScript("$(arguments[0]).change();", element); 

Như bạn có thể đã nhận thấy, tôi đang sử dụng jQuery để kích hoạt sự kiện thay đổi. Nếu bạn không sử dụng jQuery trên ứng dụng của mình, bạn có thể kiểm tra here cách kích hoạt nó bằng javascript vani.

Hy vọng rằng sẽ giúp ai đó.

+0

Dường như không hoạt động đối với các trường nhập tệp – ndtreviv

0

Tôi gặp sự cố tương tự với danh sách thả xuống được tạo bằng Ajax.
Khi người dùng trong một lĩnh vực, hệ thống sẽ hiển thị AJAX div w với một vài lựa chọn, mỗi người như một liên kết với target='#'

Và thậm chí tệ hơn, đã có một chức năng kêu gọi onChange() đó điền một hệ thống cờ, và lá cờ đó sẽ được sử dụng như một xác nhận trên form.submit() (oh, sự đau đớn)

Anyways, giải pháp của tôi cho điều này:
1 - Selenium SendKeys lệnh nên div Ajax sẽ xuất hiện

<tr> 
    <td>sendKeys</td> 
    <td>id=txtTipoDocumento</td> 
    <td>ipsum lorem</td> 
</tr> 

2 - chờ đợi cho liên kết với các tùy chọn dự kiến ​​xuất hiện

<tr> 
    <td>waitForElementPresent</td> 
    <td>link=ipsum lorem</td> 
    <td></td> 
</tr> 

3 - selen clickAt vào liên kết

<tr> 
    <td>clickAt</td> 
    <td>link=ipsum lorem</td> 
    <td>10,20</td> 
</tr> 


4 - Đây là một trong những các sản phẩm khai thác: bắn theo cách thủ công onChange() AND mờ sự kiện. Ngoài ra, Foce trình duyệt để thiết lập tập trung vào khác nhau lĩnh vực

<tr> 
     <td>fireEvent</td> 
     <td>id=txtTipoDocumento</td> 
     <td>blur</td> 
    </tr> 
    <tr> 
     <td>fireEvent</td> 
     <td>id=selSerie</td> 
     <td>change()</td> 
    </tr> 
    <tr> 
     <td>fireEvent</td> 
     <td>id=selSerie</td> 
     <td>blur</td> 
    </tr> 
    <tr> 
     <td>focus</td> 
     <td>id=imgDataElaboracao</td> 
     <td></td> 
    </tr> 

5 - Cuối cùng, để chắc chắn, tôi đã thực hiện Selenium làm thực hiện ClickAt() lệnh vào nút Submit của forme, giữa một mouseDown và MouseUp lệnh

<tr> 
    <td>mouseDown</td> 
    <td>id=btnSalvar</td> 
    <td></td> 
</tr> 
<tr> 
    <td>focus</td> 
    <td>id=btnSalvar</td> 
    <td></td> 
</tr> 
<tr> 
    <td>clickAt</td> 
    <td>id=btnSalvar</td> 
    <td>10,20</td> 
</tr> 


Không tao nhã, nhưng nó làm việc.

Các vấn đề liên quan