【问题标题】:Finding and providing values to web elements using if-else statements in Selenium WebDriver使用 Selenium WebDriver 中的 if-else 语句查找 Web 元素并为其提供值
【发布时间】:2017-12-15 15:30:24
【问题描述】:

我正在尝试使用 Selenium WebDriver 在各种文本框中键入特定值,使用 Try-Block 和 If-Else 语句来查明特定的 Web 元素,然后根据该单个元素提供适当的值。我的问题是我的 if 语句似乎被解读为“假”,因为每次读取 if-else 语句时,它都会转到 else { 块并打印“错误”。

我已经检查了 element.getAttribute("id") 的字符串值,它们确实等于我在 if-else 语句中给出的值。

我已经进行了一些挖掘,虽然我发现了一些与元素可见性和 element.isEnabled() 的用法相关的 if-else 语句,但我没有找到任何使用 element.getAttribute() 字符串值来查找特定 Web 的内容元素并随后发送值。

这是我的代码:

WebDriver 驱动程序;

@Test
public void enterInfo() throws Exception {

     System.setProperty("webdriver.gecko.driver","C:\\Users\\Kohout\\Documents\\geckoDriver\\geckodriver.exe" );
     DesiredCapabilities capabilities = DesiredCapabilities.firefox();
        capabilities.setCapability("marionette", true);
        driver = new FirefoxDriver();

        driver.get("http://www.firstcry.com/");
        Thread.sleep(3000L);

        WebElement element = driver.findElement(By.id("Email"));
        typingInfo(element);

        Thread.sleep(2000L);

        element = driver.findElement(By.id("mobileprefix"));
        typingInfo(element);

        Thread.sleep(2000L);


        element = driver.findElement(By.id("Mobile"));
        typingInfo(element);
    }



public void typingInfo(WebElement element) throws AWTException {

    String email = "eclipse@gmail.com";
    String countryCode = "1";
    String phoneNumber = "555-318-9357";

    try {

        if(element.getAttribute("id") == "Email") {

            System.out.println("Commencing command...");

            element.sendKeys(email);

        } else if (element.getAttribute("id") ==  "mobileprefix") {

            System.out.println("Commencing command...");

            element.sendKeys(countryCode);
        } else if (element.getAttribute("id") == "Mobile") {

            System.out.println("Commencing command...");

            element.sendKeys(phoneNumber);

        } else {

            System.out.println("Error");
        }

    } catch (Throwable t) {

        System.out.println(t.getStackTrace());

    } 

感谢您的帮助和建议。

【问题讨论】:

  • 你能打印else块中的属性吗? System.out.println(element.getAttribute("id")); System.out.println("Error");
  • 比较字符串时需要使用 equals() 函数而不是 ==。以下问题的最佳答案。

标签: java selenium if-statement webdriver


【解决方案1】:

试试这个:

    if("Email".equals(element.getAttribute("id"))) {
        System.out.println("Commencing command...");
        element.sendKeys(email);
    } else if ("mobileprefix".equals(element.getAttribute("id"))) {
        System.out.println("Commencing command...");
        element.sendKeys(countryCode);
    } else if ("Mobile".equals(element.getAttribute("id"))) {
        System.out.println("Commencing command...");
        element.sendKeys(phoneNumber);
    } else {
        System.out.println("Error");
    }
  • 在 Java 中始终使用equals 进行字符串比较。 == 检查对象 平等。
  • 在字符串文字上调用 equals 以避免可能 NullPointerException

【讨论】:

  • 就是这样!有点尴尬我忘了比较字符串值时需要使用equals()函数。感谢您的帮助!
  • @JordanKohout 很高兴听到。说 thank you 的 stackoverflow 方式是接受答案并投票。你甚至会因此而赢得声誉。
  • 当然,谢谢你分享这个。你被点赞了,好先生/女士。
【解决方案2】:

我认为这是因为您使用 == 运算符不适用于字符串比较。 尝试修改代码。

public void typingInfo(WebElement element) throws AWTException {

String email = "eclipse@gmail.com";
String countryCode = "1";
String phoneNumber = "555-318-9357";

try {

    if("Email".equalsIgnoreCase(element.getAttribute("id")) {

        System.out.println("Commencing command...");

        element.sendKeys(email);

    } else if ("mobileprefix".equalsIgnoreCase(element.getAttribute("id")) {

        System.out.println("Commencing command...");

        element.sendKeys(countryCode);
    } else if ("Mobile"..equalsIgnoreCase(element.getAttribute("id")) {

        System.out.println("Commencing command...");

        element.sendKeys(phoneNumber);

    } else {

        System.out.println("Error");
    }

} catch (Throwable t) {

    System.out.println(t.getStackTrace());

}

【讨论】:

  • 太棒了!感谢您添加“IgnoreCase”,非常有帮助。
猜你喜欢
  • 2014-07-18
  • 1970-01-01
  • 1970-01-01
  • 2015-05-21
  • 2017-07-03
  • 1970-01-01
  • 2017-09-12
  • 1970-01-01
  • 2022-07-23
相关资源
最近更新 更多