2017-10-18 19 views
-2

je devais ajouter le shampoing dans le panier il fonctionnait très bien mais maintenant ce ne est pas leur a pas de changement dans le code il maintenant faire défiler la page vers le bas et
cessent de fonctionner Voici mon codecode ne fonctionne pas comme avant (java sélénium)

driver.findElement(By.id("submit")).sendKeys(Keys.ENTER); 
WebDriverWait wait = new WebDriverWait (driver, 10); 
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("logout-trigger"))); 
driver.findElement(By.id("search-trigger")).sendKeys(Keys.ENTER); 
driver.findElement(By.id("search")).sendKeys("Shampoo"); 
driver.findElement(By.id("search")).sendKeys(Keys.ENTER); 
driver.findElement(By.id("grid_quantity_1")).sendKeys(Keys.ENTER); 
Actions actions = new Actions(driver); 
WebElement menuHoverLink = driver.findElement(By.linkText("Add to cart")); 
actions.moveToElement(menuHoverLink); 
actions.click(); 
actions.perform(); 

Le code web est

<div class="grid-add-to-cart" ng-show="prod.currentPrice > 0" ng-mouseleave="hidegridViewToggle($index+1)"> 
    <a title="Add to cart" href="javascript:void(0)" ng-mouseover="showgridViewToggle($index+1)" ng-click="helperService.addToCart('grid_product',prod.productSizeId,$index+1,prod.itemsPerBox)"> 
    <i class="fa fa-shopping-bag faa-shake animated"></i> 
    </a> 
    <div class="grid-quantity-field" id="show_grid_input_div_1"> 
    <input ng-keypress="($event.which===13)?helperService.addToCart('grid_product',prod.productSizeId,$index+1,prod.itemsPerBox):helperService.keyCheck($event)" type="number" name="quantity" id="grid_quantity_1" data-ng-class="$even ? 'height_80' : ''" oninput="maxLengthCheck(this)" ng-model="prod.itemsPerBoxInput" maxlength="5" min="1" max="99999" ng-value="userType == 'distributor' ? 6: 1" title="Add Quantity" class="ng-pristine ng-valid ng-valid-min ng-valid-max ng-valid-maxlength height_80 ng-touched" value="1" style=""> 
    </div> 
</div> 

Qu'est-ce que je reçois sur Eclipse

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
    at java.lang.reflect.Constructor.newInstance(Unknown Source) 
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:216) 
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:168) 
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:635) 
    at org.openqa.selenium.remote.RemoteWebDriver.get(RemoteWebDriver.java:322) 
+2

Expliquer * arrêter de travailler *. qu'est-ce qui se passe exactement? Si vous avez une exception, publiez aussi la trace de la pile. – Guy

+0

Il n'effectue aucune action comme avant j'étais capable d'ajouter un produit au panier mais maintenant il fait défiler la page vers le bas et n'ajoute pas le produit dans le panier –

+0

Du code html du lien, on peut savoir qu'il doit y avoir une fonction javascript pour répondre à l'événement click du lien. Dans ce cas, vous devez attendre que le navigateur exécute complètement les balises des scripts sur la page pour lier la fonction javascript à l'événement click, sinon, il ne se passera rien après avoir cliqué dessus. vous pouvez ajouter un certain wait/sleep avant actions.perform() pour voir votre problème est tel cas ou non. – yong

Répondre

0

Se référant à la HTML que vous avez partagé, vous avez les éléments suivants:

driver.findElement(By.linkText("Add to cart")); 

qui semble avoir besoin d'une modification dans la xpath. Pouvez-vous essayer la ligne de code suivante à la place:

WebElement menuHoverLink = driver.findElement(By.xpath("//a[@title='Add to cart']")); 
+0

Merci pour votre aide Cela a fonctionné quand j'ai redémarré, mais encore une fois, il a cessé de fonctionner –

+0

Mettre à jour la question avec la trace exacte de la pile d'erreur exacte. – DebanjanB

+0

Mis à jour avec la réponse –