2011-11-24 35 views
5

Tôi đang sử dụng Selenium WebDriver 2.5.0 (đã thử 2.13.0, nó không giúp ích gì). Tôi cố gắng để click vào một liên kết như thế này:Số lần nhấp chuột vào liên kết sai (hoặc không nhấp vào liên kết) trên một số máy nhất định

driver.FindElement(By.PartialLinkText("Customer - Creation").Click(); 

Trước khi nó làm việc, nhưng tôi đã cố gắng để chạy các kịch bản sau 3 tuần và tôi quan sát 3 hành vi khác nhau trên 3 máy:

  1. Máy A: Không có nhấp chuột vào liên kết nào cả, cũng không có lỗi.

  2. Máy B: Nó nhấp vào liên kết khác! Đôi khi một ở trên, đôi khi một bên dưới.

  3. Máy C (Ảo): Nó hoạt động.

Tôi chưa thử nghiệm đầy đủ (đã dành nửa ngày hôm nay), nhưng có ai vấp phải hành vi như vậy không?

Tôi đã khởi động lại PC, đã thêm lại thư viện Selenium. "SendKeys (Enter)" giúp, nhưng vấn đề này đã xảy ra không chỉ cho các liên kết, nhưng ít nhất là các hộp radio, nơi "SendKeys (Enter)" không hoạt động.

Hãy chia sẻ suy nghĩ của bạn.

Cập nhật: Các trình duyệt đều giống nhau trên ít nhất 2 máy, Internet Explorer 8.0

+0

Đây có phải là xảy ra với một trình điều khiển trình duyệt cụ thể, tất cả các trình điều khiển trình duyệt, người lái xe HTML? Nếu trình điều khiển trình duyệt cụ thể, các phiên bản trình duyệt có nằm trong 3 hệ thống không? – Tarwn

+0

là tất cả các trình duyệt chính xác giống nhau không? và cái nào? – ashwoods

+0

Các trình duyệt giống nhau trên ít nhất 2 máy, Internet Explorer 8.0 – Andrey

Trả lời

5

Giải đáp của nebehr.g ... @ gmail.com tại vấn đề Selenium:

Vấn đề này tiếp tục nảy lên bất cứ lúc nào và thường được trở lại với đề nghị làm rõ. Điểm mấu chốt là, InternetExplorerDriver tính toán tọa độ của một số đối tượng không chính xác và nhấp chuột sai vị trí. Một lý do cho điều này là giá trị thu phóng khác hơn 100%; tuy nhiên nó có thể tái sản xuất đối với một số điều khiển để thu phóng 100%.

Tôi cho rằng sẽ hữu ích nếu bạn có thể tạo trang mẫu để minh họa sự cố này. Trong thời gian chờ đợi, tại sao bạn không sử dụng phương thức click() Javascript để kiểm soát vi phạm?

http://code.google.com/p/selenium/issues/detail?id=3052

+0

Có thể các phiên bản cũ của Firefox cũng có vấn đề này không? – NoBrainer

0

Âm thanh như nguyên tố này không có mặt trong HTML của trang, nhưng thay vì thêm động khi trang được tải. Điều gì xảy ra phụ thuộc vào tốc độ của máy và độ độc đáo của văn bản. Tôi sẽ đặt cược rằng nếu bạn đã thêm một giấc ngủ dài (ví dụ:, một phút), bạn sẽ nhận được kết quả tương tự trên cả 3 máy. Nếu vậy, điều đó cho thấy vấn đề kiểm tra Selenium cổ điển nhất - cố gắng hành động trên các trang không hoàn chỉnh. Bạn cần phải tìm một yếu tố để chờ đợi trên đó sẽ đảm bảo sự hiện diện của liên kết mà bạn muốn nhấp vào.

+0

Bạn có thể giải thích rằng SendKeys (Enter) hoạt động như thế nào? – Andrey

0

Tôi chỉ có cùng một vấn đề trong FireFox. Thu phóng là 100% và lựa chọn là bởi xpath chắc chắn là chính xác. Hóa ra vấn đề biến mất khi tôi tối đa hóa browerwindow!

mã: (python api)

self.driver.maximize_window() 
1

Có rất nhiều thông tin hữu ích trong câu trả lời của Andrey và trong vấn đề Selenium ông đề cập ở https://code.google.com/p/selenium/issues/detail?id=3052. Chỉ cần gắn tất cả các thông tin đó lại với nhau và cung cấp giải pháp thành công ...

Tôi cũng đang gặp phải vấn đề nhấp chuột xảy ra ở tọa độ màn hình sai - bốn năm sau khi OP lần đầu tiên đề cập đến nó! Như những người khác đã nói:

  • Sự cố này liên quan đến InternetExplorerDriver. Tôi gặp sự cố khi thử nghiệm IE 9, nhưng không phải Chrome, Firefox hoặc thậm chí là IE 8.
  • Như đã đề cập trong vấn đề Selenium, trang web tôi đang thử nghiệm sử dụng khung.

Tôi đã thử một số giải pháp được đề xuất trong bài đăng này và ở nơi khác. Tất cả những điều sau đây KHÔNG giúp:

  • Đang cập nhật đến InternetExplorerDriver mới nhất (phiên bản 2.47.0)
  • Tối đa hóa cửa sổ trình duyệt.
  • Đặt trình duyệt thu phóng thành 100%.
  • Sử dụng chuỗi hành động, có hoặc không có move_by_offset, thay vì phương thức click() của WebDriver.

Theo đề xuất của Andrey, trợ giúp DID đang sử dụng JavaScript thay vì phương thức click() của WebDriver. Dưới đây là một dòng mã Python hiện các trick:

driver.execute_script("jQuery('{}').click();".format(css_selector)) 

này giả định rằng "tài xế" là một thể hiện của Selenium WebDriver, và "css_selector" là một chuỗi xác định các yếu tố bạn muốn nhấp chuột, và rằng jQuery là nạp vào.

2

Một điều khác cần kiểm tra là độ phân giải màn hình (không phải độ phân giải của màn hình nhưng kích thước của văn bản và biểu tượng ở cấp hệ thống). Tôi có hai máy tính xách tay trong văn phòng của tôi mà bạn đang sử dụng để thử nghiệm, một máy chạy Windows 7 và cửa sổ kia chạy Windows 10. Trên cả hai, độ phân giải màn hình lớn hơn 100% và Selenium gặp sự cố khi di chuyển chuột đến vị trí chính xác của chuột các sự kiện như nhấp và di chuột. Ngay sau khi độ phân giải màn hình được đặt thành 100%, tất cả các tác vụ chuột đều hoạt động chính xác.

Windows 7: http://windows.microsoft.com/en-us/windows7/make-the-text-on-your-screen-larger-or-smaller?v=t

Windows 10: https://superuser.com/questions/951199/windows-10-system-font-size-change

+0

Câu trả lời này giúp tôi. Cảm ơn bạn! – Buaban

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