Disclaimer: Sono nuovo di StackOverflow, almeno in termini di porre le mie domande, quindi se c'è qualcosa di sbagliato o 'cattiva pratica' su questo per favore datemi alcune indicazioni.Selezione selenio Il metodo selectByIndex esamina l'attributo indice anziché il conteggio. Perché?
Recentemente sul lavoro ho avuto motivo di usare Selenium e, essendo nuovo nello strumento, ci sono state alcune volte in cui mi sono grattato il capo per il motivo per cui qualcosa viene fatto in un certo modo. Di solito la ragione diventa evidente in seguito, ma non in questo caso.
Attualmente sto scrivendo un'automazione del browser che prevede l'indicizzazione delle combinazioni di ricerca e l'indicazione del numero di risultati visualizzati per tale combinazione su vari siti correlati alla società per cui lavoro.
Per la maggior parte di questi siti, le ricerche vengono generalmente definite tramite parole chiave e menu a discesa che gestisco tramite l'oggetto Select di Selenium. In particolare, ho utilizzato il metodo selectByIndex per scorrere le varie combinazioni.
Una cosa che ho notato è che, utilizzando questo metodo, più in basso nell'elenco delle opzioni che ho ottenuto più tempo il metodo ha preso. Quando ho aperto la dichiarazione il codice che ho trovato è stato il seguente:
/**
* Select the option at the given index. This is done by examing the "index" attribute of an
* element, and not merely by counting.
*
* @param index The option at this index will be selected
*/
public void selectByIndex(int index) {
String match = String.valueOf(index);
boolean matched = false;
for (WebElement option : getOptions()) {
if (match.equals(option.getAttribute("index"))) {
setSelected(option);
if (!isMultiple()) {
return;
}
matched = true;
}
}
if (!matched) {
throw new NoSuchElementException("Cannot locate option with index: " + index);
}
}
Cosa Sono confuso circa è il motivo per cui questo codice è scritto in modo tale che esamina l'attributo 'indice'. Per quanto posso dire il metodo getOptions() restituisce un elenco delle opzioni disponibili per il selettore in base al tag, quindi dovrebbe essere accurato, e considerando che ho elencato le combinazioni di ricerca indicizzate utilizzando lo stesso metodo e quelle che sono state preciso sono abbastanza sicuro che lo sia.
Quindi, in questo momento ho esteso la classe e ho sovraccaricato il metodo per dirigerlo direttamente all'indice corrispondente poiché ho un numero non banale di combinazioni di ricerca da controllare e qualsiasi aumento di velocità è prezioso. Non sembrano esserci problemi con il codice sovraccarico e tutto sembra accurato, quindi mi chiedo perché questo metodo sia scritto in questo modo? Qualcuno potrebbe illuminarmi?
Non preoccuparti per il tuo * Disclaimer *; la tua domanda è perfettamente a posto! Inoltre, interessante. Non conosco la risposta, ma potrebbe essere meglio chiedere in https://groups.google.com/forum/#!forum/selenium-developers – SiKing
Puoi eseguire il tuo codice sovraccarico con le opzioni nidificate e vedere se funziona bene . Usa [collegamento] (http://www.w3schools.com/tags/tryit.asp?filename=tryhtml_optgroup) – Manu