Selenio web driver: non possono essere fatti scorrere in vista

Sto usando Selenium IDE e Selenio web driver testng in eclipse ..
il mio test è contro di applicazione ZK ..

il caso di test funziona bene su Selenium IDE ..

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head profile="http://selenium-ide.openqa.org/profiles/test-case">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="selenium.base" href="http://*****/>
<title>work it2</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">work it2</td></tr>
</thead><tbody>
<tr>
    <td>open</td>
    <td>/xxx</td>
    <td></td>
</tr>
<tr>
    <td>click</td>
    <td>//li[2]/div/div/div/span</td>
    <td></td>
</tr>
<tr>
    <td>pause</td>
    <td>3000</td>
    <td>3000</td>
</tr>
<tr>
    <td>doubleClick</td>
    <td>//div[2]/div[2]</td>
    <td></td>
</tr>
<tr>
    <td>pause</td>
    <td>3000</td>
    <td>3000</td>
</tr>
</tbody></table>
</body>
</html>

ma quando lo eseguo in eclipse con selenio web driver (testng) ho ottenuto un errore ..

    selenium.open("xxx");
selenium.click("//li[2]/div/div/div/span");
Thread.sleep(3000);
selenium.doubleClick("//div[2]/div[2]");
Thread.sleep(3000);

Ho cambiato anche il codice per

 driver.get("xxx");

        driver.findElement(By.xpath("//li[2]/div/div/div/span")).click();
        Thread.sleep(3000);
        WebElement ee = driver.findElement(By.xpath("//div[2]/div[2]"));
        Actions action = new Actions(driver);
        action.doubleClick(ee).perform();
        Thread.sleep(3000);

anche sempre lo stesso errore …

l’errore è stato in questa linea

//div[2]/div[2]

com.thoughtworks.selenio.SeleniumException: Offset all’interno dell’elemento
non possono essere fatti scorrere in vista: (87, 118): [oggetto XrayWrapper [oggetto
HTMLDivElement]] Comando di durata o di timeout: 63 millisecondi Costruire
info: versione: ‘2.39.0’, di revisione: ‘ff23eac’, tempo: 2013-12-16
16:11:15 informazioni di Sistema: host: ‘Fine’, ip: ‘192.168.17.76’, os.nome:
‘Windows 7’, os.arco: “amd64”, os.versione: ‘6.1’, java.versione:
‘1.7.0_51’ ID di Sessione: 3b79783c-2558-4c87-bd51-a72821696040 Driver
info: org.openqa.selenio.firefox.FirefoxDriver Capacità
[{platform=XP, acceptSslCerts=true, javascriptEnabled=true,
cssSelectorsEnabled=true, databaseEnabled=true, browserName=firefox,
handlesAlerts=true, browserConnectionEnabled=true,
webStorageEnabled=true, nativeEvents=false, ruotabile=false,
locationContextEnabled=true, applicationCacheEnabled=true,
takesScreenshot=true, version=27.0.1}]

  • l’errore compare su questa linea in eclipse selenio.doubleClick(“//p[2]/div[2]”);
  • DoubleClick xpath nel vostro IDE esempio è diverso dal WebDriver codice. È a questo proposito?
  • scusa è stato un errore !
  • Io sono veramente bloccato qui , qualsiasi aiuto?
  • Che tipo di errore può verificarsi perché l’elemento che si sta cercando di scegliere non è visibile. Tuttavia, che è un’ipotesi. E ‘ difficile aiutare senza lo stesso problema che si verificano sul nostro computer. Si può creare una pagina di esempio in jsfiddle.net che ha lo stesso problema? Spesso, facendo un semplice test caso aiuta a trovare il problema.
InformationsquelleAutor Naif | 2014-03-23



4 Replies
  1. 8

    Naif,

    In realtà la domanda di cui sopra è di diverso rispetto alla domanda effettiva, di conseguenza, si dovrebbe avere chiesto come una questione a parte. Ancora, sto rispondendo alla tua domanda precedente.

    L’errore, infatti, l’elemento che si sta tentando di fare clic su non è visibile. Prima di fare clic su un elemento, questo dovrebbe essere visibile. È possibile effettuare questa operazione seguendo –

    WebElement element = driver.findElement(By.xpath("//div[2]/div[2]"));
    WebDriverWait wait = new WebDriverWait(driver, 20); //here, wait time is 20 seconds
    
    wait.until(ExpectedConditions.visibilityOf(element)); //this will wait for elememt to be visible for 20 seconds
    element.click(); //now it clicks on element

    Se sopra non funziona, si può fare clic su un elemento tramite l’esecuzione di javascript(ma questa non è una buona pratica)

    JavascriptExecutor js = (JavascriptExecutor)driver;
    js.executeScript("arguments[0].click();", element);
    • Grazie , ma non funziona nemmeno .. sono sicuro che l’elemento è visibile nel browser.. e funziona bene con selenium IDE .. Ma non ho idea perché non funziona con il driver web !
    • org.openqa.selenio.TimeoutException: timeout dopo 20 secondi di attesa per la visibilità di [[FirefoxDriver: firefox su XP (d6ae4ad6-057c-460b-a730-a52f05fb536f)] -> xpath: //div[2]/div[2]]
    • Si prega di provare con la parte Javascript, sarà sicuramente il lavoro.
    • funziona.. ma come posso usarlo per fare doppio clic ?
    • WebElement elemento = driver.findElement(Da.xpath(“//p[2]/div[2]”)); JavascriptExecutor js = (JavascriptExecutor)driver; js.executeScript(“arguments[0].fare clic su();”, elemento);
    • Io non sono sicuro circa il doppio click, ma dare una prova con – (JavascriptExecutor)driver; js.executeScript("arguments[0].dblclick();", element);
    • grazie , ma non ha funzionato ..
    • Ciao dal futuro. Scorrere verso il basso in vista non ha funzionato per me, anche se l’elemento è già in vista. Quello che ha funzionato è stato il .click attraverso il executeScript funzione. In python, la chiamata di API è stato `js.execute_script(“argomento[0].fare clic su();”, elemento). Grazie per la tua soluzione!

  2. 1

    Non sono sicuro, ma prova a vedere se dopo funziona per voi. Primo, hai per rendere tale elemento visibile prima di interagire con esso –

    WebElement element = driver.findElement(By.xpath("//div[2]/div[2]"));
    ((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", element);

    Il codice precedente scorrere verso il basso fino a che l’elemento è visibile e quindi è possibile fare clic su di esso.

    • L’ho provato .. è dose non funziona
  3. 0

    Mi è stato sempre questo errore in modo leggermente diverso contesto in cui stavo cercando di fare clic su tag di ancoraggio con il selenio RemoteWebDriver (stavo cercando di sostituire WebDriver). La correzione è stata l’identificazione del set di funzionalità per il driver per es:

    capability = DesiredCapabilities.chrome();
    capability.setPlatform(Platform.WIN10);
    capability.setCapability("version", "66");

Lascia un commento