5

Ho un'app non angolare dove faccio clic su un collegamento e viene visualizzata una nuova finestra popup. Quindi posso selezionare per caricare un'immagine o un video. Dico al goniometro e/o al webdriver di cliccare sul pulsante per caricare le foto.Elemento non selezionabile al punto (215, 251) errore

se uso:

var addPhotos = element(by.css('#px-select-photo')).click(); 

posso vedere visivamente il tasto viene premuto tuttavia il test è quindi fallito e l'errore non cliccabile a ... (215, 251)

Allora pensavo di poter ingannare nella cliccando posizione XY (che sto assumendo questi due numeri l'errore sono) e non ottengo niente

codice che ho usato per questo è:

browser.actions().mouseMove({ 
    x: 702, 
    y: 621 
}).click().perform(); 

Fa clic, ma non sul pulsante.

Infine ho provato questo:

var addPhotos = element(by.css('#px-select-photo')); 
browser.executeScript('arguments[0].scrollIntoView()', addPhotos.getWebElement()); 
browser.actions().mouseMove(addPhotos).click().perform(); 

che produce anche alcun risultato.

Inoltre, sto ricevendo questo avvertimento:

WARNING - more than one element found for locator By.cssSelector("#px-select-photo") - the first result will be used

Tuttavia, v'è solo un elemento nel file HTML, non so cosa questo è tutto su entrambi.

+0

Non perdere la testa. Iniziamo a capire di cosa si tratta. Che ne dici di rendere il tuo selettore più specifico - dì "# pxupload3 input # px-select-photo'? Fa qualche differenza? – alecxe

+0

@alecxe Ho appena provato che non ho riscontrato alcun errore nell'elemento trovato per # pxupload3 –

+1

browser.executeScript ('argomenti [0] .click()', addPhotos.getWebElement()); browser.actions(). MouseMove (addPhotos) .click(). Perform(); –

risposta

1

Si prega di provare il codice di seguito: -

browser.executeScript('arguments[0].click()', addPhotos.getWebElement()); 
browser.actions().mouseMove(addPhotos).click().perform(); 
1

L'avviso potrebbe essere la chiave per risolvere il problema.

Fai la tua selettore più specifica e attesa per il pulsante di caricamento per diventare cliccabile:

var EC = protractor.ExpectedConditions; 
var addPhotos = element(by.css('#pxupload3 input#px-select-photo')); 

browser.wait(EC.elementToBeClickable(addPhotos), 5000); 
addPhotos.click(); 

Opzione alternativa sarebbe quella di ottenere tutti gli elementi da px-select-photo id e filtrare visibile:

var addPhotos = element.all(by.css("#px-select-photo")).filter(function (addButton) { 
    return addButton.isDisplayed(); 
}).first(); 
addPhotos.click(); 
+0

Mi dispiace non ho familiarità con questo metodo. Come definisco l'EC? –

+0

@NicolePhillips sicuro, aggiornato. – alecxe

+0

L'attesa è scaduta –

Problemi correlati