2015-08-04 44 views
5

Tôi lấy yếu tố nút theo Xpath, nhưng khi cố gắng nhấp vào nó, nhận được yếu tố không hiển thị ngoại lệ.Phần tử không hiển thị Selenium/C#

<div class="modal-footer"> 
    <button id="btnRegister" type="button" class="btn btn-primary btn-block">Register</button> 
</div> 

Các div mẹ

<div class="modal fade in" id="registration-window" tabindex="-1" role="dialog" aria-labelledby="register-title" aria-hidden="false" style="display: block;"> 

Trả lời

6

Để thêm vào danh sách những thứ bạn có thể thử:

Vấn đề có thể là một phức tạp hơn một chút so với yếu tố đó hiện tại không hiển thị. Có thể có một yếu tố vô hình ở phía trước của nó mà là giữ nó khỏi được nhìn thấy không có vấn đề bao lâu bạn chờ đợi. Trong trường hợp này, có một vài cách mà bạn vẫn có thể nhận Ahold của nó:

Di chuyển đến nó với javascript:

JavascriptExecutor js = (JavascriptExecutor)driver; 
js.executeScript("arguments[0].scrollIntoView()", yourElement); 

hoặc ...

Click vào nó với javascript:

JavascriptExecutor js = (JavascriptExecutor)driver; 
js.executeScript("arguments[0].click()", yourElement); 
+0

Vâng, tôi nghĩ rằng nhấp vào nó thông qua js sẽ làm việc ở đây :) – alecxe

+0

Có lẽ một câu hỏi ngu ngốc chút, nhưng tôi nên tham khảo để có thể sử dụng lớp JavasScriptExecutor vì tôi không thể sử dụng nó atm? –

+0

Không thể nhớ nó hoạt động như thế nào với C#. Tôi đã được mã hóa java cho cách cách quá dài. :) – aholt

3

Một danh sách những thứ mà thường giúp đỡ trong trường hợp như thế này:

  • maximize the browser window:

    driver.Manage().Window.Maximize(); 
    
  • chuyển sang yếu tố trước khi bấm vào nó:

    Actions builder = new Actions(driver); 
    builder.MoveToElement(yourElement).Click().Build().Perform(); 
    
  • wait for element to become clickable:

    var wait = new WebDriverWait(driver, TimeSpan.FromMinutes(1)); 
    var clickableElement = wait.Until(ExpectedConditions.ElementIsClickable(By.Id("id"))); 
    
+0

* Nó đã không sụp đổ nó có vẻ như nó tìm thấy phần tử và nhấp vào nó nhưng không có gì xảy ra. Cũng giống như nó đã không bấm vào nó, bất kỳ đầu mối? * –

+0

@ Mystia yeah, tôi nghĩ rằng js click aholt đã đề xuất nên giải quyết vấn đề. – alecxe

0

Xem trang web của bạn trong Firefox với plugin Firepath được cài đặt. Sau đó nhấn F12 để hiển thị plugin, nhấp vào FirePath và nhập XPath của bạn. Nếu bạn có nhiều hơn 1 nút Kết hợp, thì bạn cần phải thay đổi XPath của mình cho đến khi bạn chỉ có 1. Nếu phần tử bạn đang cố gắng nhấp vào không được bao quanh trong dấu gạch ngang màu xanh, điều đó có nghĩa là bạn đang nhắm mục tiêu phần tử sai.

enter image description here

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