2015-08-04 13 views
5

ho l'elemento tasto da Xpath, ma quando tenta di fare clic su di esso, ottenendo elemento non fa eccezione visibile.elemento non visibile Selenio/C#

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

Il div genitore

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

risposta

6

Per aggiungere alla lista delle cose che si possono provare:

Il problema può essere un un po 'più complicato di quello che l'elemento non è attualmente visibile. Potrebbe esserci un elemento invisibile di fronte ad esso che impedisce di essere visibile per quanto tempo aspetti. In questo caso, ci sono alcuni modi che si può ancora ottenere ahold di esso:

Spostarsi con javascript:

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

o ...

Clicca con javascript:

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

Sì, penso che cliccarlo tramite js funzionerebbe qui :) – alecxe

+0

Forse una domanda un po 'stupida, ma dovrei fare riferimento per poter usare la classe JavasScriptExecutor dato che non riesco a usarlo? –

+0

Non ricordo come funziona con C#, per essere onesti. Ho programmato java in modo troppo lungo. :) – aholt

3

Un elenco di cose che di solito aiutano in casi come questo:

  • maximize the browser window:

    driver.Manage().Window.Maximize(); 
    
  • mossa per elemento prima clic su di esso:

    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

* E non è precipitato sembra che trovò elemento e cliccato su di esso, ma non succede nulla. Proprio come non ha fatto clic su di esso, qualche indizio? * –

+0

@Mystia sì, penso che js click ha suggerito aholt dovrebbe risolvere il problema. – alecxe

0

Guarda la tua pagina web in Firefox con il plugin Firepath installato. Quindi premi F12 per far apparire il plugin, fai clic su FirePath e digita il tuo XPath. Se hai più di 1 nodo corrispondente, devi modificare l'XPath fino a quando non ne hai 1. Se l'elemento su cui stai tentando di fare clic non è circondato da trattini blu, significa che hai scelto come target l'elemento sbagliato.

enter image description here

Problemi correlati