2013-06-18 54 views
5

Tôi có một ứng dụng web mà tôi đang cố gắng viết các thử nghiệm selen và tôi đã gặp phải sự cố với trình điều khiển Chrome Có một giao diện kiểu thuật sĩ mà người dùng có thể sử dụng để điền vào biểu mẫu Có một nút để thêm một hàng với một vài cài đặt.Tôi đã phác thảo điều này bằng màu đen. khu vực cho nút. giữa hình chữ nhật này không chồng lấn lên bất cứ điều gì khác.ChromeDriver - Phần tử "đáng sợ" không thể nhấp vào tại điểm (x, y). Phần tử khác sẽ nhận được nhấp chuột

enter image description here

vấn đề là có một div khổng lồ có chứa toàn bộ màn hình và Chrome nói rằng div này sẽ nhận được nhấp chuột. Vì thế, làm thế nào để tôi có được điều này? Nó không có vẻ như hành vi chính xác mà tôi không thể nhấp vào nút này bởi vì có một thẻ div xung quanh. Hầu như không có gì có thể nhấp được nếu đây là hành vi thích hợp.

enter image description here

Nút Tôi muốn nhấn là thế này:

<button id="add-thisSetting" class="btn">Add This Setting</button> 

Các div xung quanh là:

<div class="application-tour-overlay"></div> 

Dưới đây là một nguồn html viết tắt:

<div id="editBase"> 
    <div class="edit-buttons application_edit_controls"> 
    <div id="thingamajigSettings" class="application_thingamajig_settings"> 
     <div id="thisSetting" class="application_thissetting application-tour-spotlit"> 
     <div class="control-title">This Setting 
     </div> 
     <div class="thisSetting-block"> 
      <div> 
      <div class="scrolling-table" style="overflow-y: auto; overflow-x: hidden;"> 
       <div class="add-thisSetting-bar"> 
       <div class="btn-group pull-right"> 
        <button id="add-thisSetting" class="btn">Add This Setting</button> 
        <button class="btn dropdown-toggle" data-toggle="dropdown"> 
        <ul class="dropdown-menu"> 
       </div> 
       </div> 
      </div> 
      </div> 
      <div id="rulescontainer" class="application_rule_view"> 
      <div id="settings"> 
       <div class="edit-buttons application_edit_controls"> 
       </div> 
      </div> 
      </div> 
      <div id="app_notify_manager" class="application_notify_manager"> 
      </div> 
     </div> 
     </div> 
    </div> 
    </div> 
</div> 
<div class="identityOfMe-widget-ft"></div> 
<div id="jstree-marker" style="display: none;"></div> 
<div class="application_tour"> 
    <div class="application-tour-overlay"></div> 
+1

HTML của xung quanh 'div' trông như thế nào? Lý do để nó có mặt ở nơi đầu tiên là gì? Có vẻ như bạn đang chiến đấu với các phương pháp phát triển xấu. – Arran

+0

Như một giải pháp thay thế, bạn có thể chuyển thuộc tính style = "display: none" cho div này. Đây là cách để làm điều này http://stackoverflow.com/a/8476765/1343698 –

+0

Dưới đây là nguồn của trang trông như thế nào: – Selena

Trả lời

0

cố gắng sử dụng fire_event("click") thay vì click ... nó đã giúp tôi.

0

Có một câu hỏi tương tự [ở đây] (Debugging "Element is not clickable at point" error) với nhiều thông tin. Tôi đã có một vấn đề tương tự mà tôi đã không thể bấm vào một nút trên phương thức đã có trong DOM, nhưng ẩn. Hãy thử điều này gọi chức năng này nhiều lần để xem vị trí của nút của bạn có thay đổi từ JS hay không.

public void PrintLocation() 
{ 
Point point = driver.findElement(By.id("add-thisSetting")).getLocation(); 
System.out.println("X="+point.x+"Y="+point.y"); 
} 

Nếu trường hợp này xảy ra, bạn có thể khắc phục bằng cách ngủ cho đến khi nút đã ngừng di chuyển.

Thread.sleep(500); 
0

Một trong những khu nghỉ mát cuối cùng của tôi trong những trường hợp như thế này (thiết kế trang web xấu) là phải nghỉ mát để sửa đổi javascript của DOM:

driver.execute_script(<<-javascript) 
    var overlay = document.getElementById("modal_overlay"); 
    overlay.parentNode.removeChild(overlay); 
javascript 

Đối xử lý sự cố kỹ lưỡng hơn, bạn có thể có một cái nhìn tại của tôi trả lời cho một vấn đề tương tự trước đây cho trường hợp chung: https://stackoverflow.com/a/23705280/234593

1

Đôi khi nhà phát triển sử dụng "div" toàn màn hình để theo dõi hành động, nhưng trình quản trị web Chrome không thể nhấp vào bất cứ điều gì khi "div" hiển thị và ở trên cùng. Vì vậy, bạn có thể sử dụng thuộc tính "z-index" để ẩn nó.

Có một ví dụ trong C#: ((IJavaScriptExecutor) this.Driver) .ExecuteScript ("arguments [0] .setAttribute ('style', 'z-index: -1')", popup);

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