web-dev-qa-db-fra.com

Pilote Web Selenium: impossible de faire défiler la vue

J'utilise Selenium IDE et Selngium web driver testng dans Eclipse .. mes tests sont contre l'application ZK ..

le cas de test fonctionne bien sur 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>

mais quand je l'ai exécuté dans Eclipse avec le pilote Web Selenium (testng), j'ai eu une erreur ..

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

J'ai également changé le code en

 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);

obtenant également la même erreur ...

l'erreur était dans cette ligne

//div[2]/div[2]

com.thoughtworks.Selenium.SeleniumException: le décalage dans l'élément ne peut pas défiler dans la vue: (87, 118): [object XrayWrapper [object HTMLDivElement]] Durée ou délai d'expiration de la commande: 63 millisecondes Informations de build: version: '2.39.0', révision : 'ff23eac', heure: '2013-12-16 16:11:15' Infos système: Hôte: 'EnD', ip: '192.168.17.76', nom os: 'Windows 7', os.Arch: ' AMD64 ', version os:' 6.1 ', version Java:' 1.7.0_51 'ID de session: 3b79783c-2558-4c87-bd51-a72821696040 Informations sur le pilote: org.openqa.Selenium.firefox.FirefoxDriver Capabilities [{platform = XP , acceptSslCerts = true, javascriptEnabled = true, cssSelectorsEnabled = true, databaseEnabled = true, browserName = firefox, handlesAlerts = true, browserConnectionEnabled = true, webStorageEnabled = true, nativeEvents = false, rotatable = false, locationContextEnabled = true, applicationCacheEnabled = true, prendScreenshot = true, version = 27.0.1}]

10
Naif

Naif,

En fait, votre question ci-dessus est différente de la question réelle, vous auriez donc dû la poser comme une question distincte. Pourtant, je réponds à votre question précédente.

L'erreur est due au fait que l'élément sur lequel vous essayez de cliquer n'est pas visible. Avant de cliquer sur l'élément, il doit être visible. Vous pouvez le faire en suivant -

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

Si ci-dessus ne fonctionne pas, vous pouvez cliquer sur l'élément en exécutant javascript (mais ce n'est pas une bonne pratique)

JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("arguments[0].click();", element);
8
TDHM

Essayez d'exécuter le script et cliquez sur l'élément

driver.executeScript("arguments[0].click();", element)
2
Zoran Pandovski

Je ne suis pas sûr mais essayez de voir si ce qui suit fonctionne pour vous. Tout d'abord, vous devez rendre cet élément visible avant d'interagir avec lui -

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

Le code ci-dessus défilera jusqu'à ce que l'élément soit visible et vous pourrez ensuite cliquer dessus.

1
TDHM

J'obtenais cette erreur dans un contexte légèrement différent où j'essayais de cliquer sur la balise d'ancrage avec le Selenium RemoteWebDriver (j'essayais de remplacer WebDriver). Le correctif identifiait le bon ensemble de capacités pour le pilote, par exemple:

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

0
lnarasimhan