使用Selenium时,equals()无法正常工作

时间:2017-03-31 15:18:46

标签: selenium selenium-webdriver

我正在尝试将当前网址与字符串网址进行比较,但以下代码会返回false

driver.get("https://www.facebook.com");       
System.out.println(driver.getCurrentUrl().equals("https://www.facebook.com"));

2 个答案:

答案 0 :(得分:4)

我尝试了您的代码,driver.getCurrentUrl()返回的网址为"https://www.facebook.com/"

由于您使用equals进行"https://www.facebook.com"检查,因为返回的网址末尾缺少'/',它将返回false。将其与返回的此网址进行比较,或使用contains()检查返回的网址是否正确。

答案 1 :(得分:1)

而不是使用equals()尝试使用startsWith()

  

driver.getCurrentUrl()。startsWith( “https://www.facebook.com”)

contains()

  

driver.getCurrentUrl()。包含( “https://www.facebook.com”)

这种方法会好得多。
要使用equals(),您需要 完全相同的 路径。

但是使用contains()startsWith(),您可以检查预期的行为并进行断言。

我创建了一些演示代码:

public class FacebookDemoTest {

    private WebDriver driver;

    @BeforeMethod
    public void setUp() {
        driver = DriverManager.getInstance();
        driver.get("https://www.facebook.com");
    }

    @Test
    public void testContainsAndStartsWith() throws Exception {
        System.out.println("CURRENT URL:" + driver.getCurrentUrl());

        Assert.assertTrue(driver.getCurrentUrl().contains("https://www.facebook.com"));
        Assert.assertTrue(driver.getCurrentUrl().startsWith("https://www.facebook.com"));
    }

    @Test
    public void testEquals() throws Exception {
        System.out.println("CURRENT URL:" + driver.getCurrentUrl());

        Assert.assertTrue(driver.getCurrentUrl().equals("https://www.facebook.com"));
        Assert.assertTrue(driver.getCurrentUrl().contentEquals("https://www.facebook.com"));
    }

    @AfterMethod
    public void tearDown() throws Exception {
        DriverManager.closeQuietly();
    }
}

结果如下:

enter image description here

来自控制台日志的当前URL:

  

CURRENT网址:https://www.facebook.com/