【问题标题】:Selenium WD / Java | Cannot create 'if' & 'else if' statement硒WD / Java |无法创建“if”和“else if”语句
【发布时间】:2017-12-05 13:11:10
【问题描述】:

我有一个网页,其中有一个特定股票是否开盘/收盘的指标。 为此,我想设置一个 if & else if 语句。出于某种原因,我在 eclipse 中遇到错误。

*注意:不知道它是否有帮助,但是如果我将代码复制/粘贴到一个新的“主”类空类中,它可以正常工作 - 所以代码的结构是好的,我猜测。

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;

public class TestClock {

public static void chromeMethod(WebDriver driver) {
    System.setProperty("webdriver.chrome.driver", "C:\\automation\\drivers\\chromedriver.exe");
}

public static void runTestClock(WebDriver driver)
{


    WebElement Status = null;
    if( Status == driver.findElement(By.cssSelector(".redClockBigIcon")));
    {
        System.out.println("Stock is closed");
        driver.navigate().back();
    }

    else if (Status == driver.findElement(By.cssSelector(".greenClockBigIcon")) );
    {
        System.out.println("Stock is open");

        driver.navigate().back();
    }

}
}

'else' 下出现语法错误:

标记“else”的语法错误,删除此标记

【问题讨论】:

  • 你有一个多余的;

标签: java selenium if-statement selenium-webdriver elements


【解决方案1】:
else if (Status == driver.findElement(By.cssSelector(".greenClockBigIcon")) );

这是你的错误:最后一个 ;必须删除

【讨论】:

  • :D没问题^^
【解决方案2】:

您发布的代码有一些问题。

  1. 您将; 放在ifelse if 语句的末尾。它们都应该被删除。

  2. 您正在将元素 Status(当前为 null)与 .findElement() 返回值进行比较。如果找不到该元素,它将抛出异常,而不是返回null 元素。解决这个问题的方法是使用.findElements()(注意复数,Elements)并检查列表是否为空。如果为空,则表示未找到该元素。

  3. 您的.back() 语句在这两种情况下都存在。因此,它可以从if 中移出并以任何一种方式执行。

重写代码

public static void runTestClock(WebDriver driver)
{
    if (driver.findElements(By.cssSelector(".redClockBigIcon")).isEmpty())
    {
        System.out.println("Stock is closed");
    }
    else if (driver.findElements(By.cssSelector(".greenClockBigIcon")).isEmpty())
    {
        System.out.println("Stock is open");
    }
    driver.navigate().back();
}

说了这么多...通过查看您正在使用的 CSS 选择器,我猜绿色表示股票已开盘,红色表示已收盘。这意味着你的逻辑倒退了。我认为您需要将消息切换为打开 关闭,但您会比我更了解...

【讨论】:

  • 您的回答太棒了,我确实按照您在最后一个注释中的建议切换了 CSS 的值。我有学习问题:1)为什么我们使用 Elements 而不是 element ? 2) 为什么我们应该使用.isEmpty(),我们不能只使用if & elseIf & else 来处理异常吗?这是一样的吗?非常感谢!!!
  • 1) 所以.findElement() 旨在返回单个元素。问题是,如果该预期元素不存在,则会引发异常。使用 .findElements() 总是返回一个集合。如果找到单个元素,则列表将具有单个元素。如果没有找到任何元素,则列表将为空......等等。即使列表为空,也不会引发异常,因此这是确定定位器是否从页面返回元素的首选方法。
  • 2) 我们需要使用.isEmpty(),因为这是测试返回的列表是否为空。如果列表为空,则表示该元素在页面上不存在。这是ifs 用来确定股票是开市还是收市的条件。
  • 非常感谢您的解释!
  • 如果您发现这个或任何其他答案有用,请点赞。当您找到问题的答案后,请将其标记为已接受,这样您的问题就不会一直无人回答。
【解决方案3】:

请删除 ; (分号)在 if 和 else if 语句的末尾。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-11
    • 1970-01-01
    • 2019-04-09
    • 2023-03-28
    • 2020-10-29
    相关资源
    最近更新 更多