【问题标题】:Code isn't working as it was before (selenium java)代码不像以前那样工作(selenium java)
【发布时间】:2017-10-18 04:02:16
【问题描述】:

我不得不在购物车中添加洗发水 它工作正常 但现在不是 他们的代码没有变化 现在它向下滚动页面并停止工作
下面是我的代码

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

网页代码是

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

我在 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) 

【问题讨论】:

  • 解释停止工作。到底发生了什么?如果您也有异常发布堆栈跟踪。
  • 它没有像以前那样将产品添加到购物车中执行任何操作,但现在它向下滚动页面并且不会将产品添加到购物车中
  • 从链接的html代码可以知道,必须有一个javascript函数来响应链接的点击事件。在这种情况下,您需要等待浏览器完全执行页面上的脚本标签才能将javascript函数绑定到点击事件,否则点击后不会发生任何事情。您可以在 actions.perform() 之前添加一些等待/睡眠,以查看您的问题是否属于这种情况。
  • 从它工作到现在,你有没有改变什么?升级硒版本?更新了您的页面版本(不同的 HTML)?
  • 没有任何改变

标签: java selenium testing selenium-webdriver automated-tests


【解决方案1】:

参考您分享的HTML,您有以下内容:

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

这似乎需要在xpath 中进行一些修改。您可以尝试以下代码行吗:

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

【讨论】:

  • 感谢您的帮助,当我重新启动时它工作了,但它再次停止工作
  • 用确切的整个错误堆栈跟踪更新问题。
  • 响应更新
猜你喜欢
  • 1970-01-01
  • 2018-01-11
  • 1970-01-01
  • 1970-01-01
  • 2020-02-02
  • 1970-01-01
  • 1970-01-01
  • 2014-06-23
  • 1970-01-01
相关资源
最近更新 更多