【问题标题】:Selenium WebDriver javaSelenium WebDriver java
【发布时间】:2016-05-21 18:57:12
【问题描述】:

我正在使用 Mozilla firefox 44.0.1 & java version 1.8 & selenium Version 2.48

我正在关注Web Page

我需要选择一个项目并按下“我想购买这个项目”按钮,这将创建 购物篮区域中有 1 件商品。添加后,右上角的购物篮就会更新。 你会看到:

1 件/秒查看购物篮

我在定位此项目时遇到问题,并且出现“无法定位元素”错误。 我有以下行来定位元素:

String count = driver.findElement(By.id("buyBasketCount")).getText();

我试过了:

String count = driver.findElement(By.xpath("//div[@class='buyBasketContent']/td[1]/span")).getText();

如何访问此元素?我正在尝试获取变量计数返回的值。但我无法找到元素。

如何访问页面中的这个元素?

【问题讨论】:

    标签: java selenium-webdriver


    【解决方案1】:

    您可以使用Thread.sleep(enter some time in milliseconds),但这绝不是推荐的方式。

    宁可使用这个:

    WebDriverWait wait = new WebDriverWait(driver, 10);
    WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("buyBasketCount")));
    String count = driver.findElement(By.id("buyBasketCount")).getText(); 
    

    【讨论】:

      【解决方案2】:

      应该使用 FluentWait。类似于以下内容:

      FluentWait<WebDriver> ajaxWait = new FluentWait<>(driver)
                  .withTimeout(15, TimeUnit.SECONDS)
                  .pollingEvery(75, TimeUnit.MILLISECONDS)
                  .ignoring(AssertionError.class);
      final By by = By.id("buyBasketCount");
      ajaxWait.until(new Predicate<WebDriver>() {
          public boolean apply(final WebDriver input) {
              return driver.findElements(by).size() > 0;
          }
      });
      String count =  driver.findElement(by).getText();
      

      【讨论】:

        【解决方案3】:

        试试

        Thread.sleep(1000); 
        

        之前

        String count = driver.findElement(By.id("buyBasketCount")).getText(); 
        

        或者

        String count = driver.findElement(By.xpath("//div[@class='buyBasketContent']/td[1]/span")).getText();
        

        【讨论】:

        • 永远不要使用 Thread.sleep()。不同规格的机器将需要不同的等待时间,因此这将导致间歇性故障。其次,如果您有一台可以在 100 毫秒内渲染元素的快速机器,您仍然会无缘无故地坐在那里等待另一个 900 毫秒。 Thread.sleep() 会减慢您的测试速度并导致长达一小时的测试运行。拒绝吧!到 Thread.sleep();
        • 好,我明白了,我的想法是让他意识到由于渲染而没有找到控件,他必须等待,设置
        猜你喜欢
        • 2018-04-16
        • 1970-01-01
        • 2018-08-18
        • 2016-11-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多