Selenium 等于()不等于';硒不能像预期的那样起作用

Selenium 等于()不等于';硒不能像预期的那样起作用,selenium,selenium-webdriver,Selenium,Selenium Webdriver,我试图将当前URL与字符串URL进行比较,但以下代码返回false driver.get("https://www.facebook.com"); System.out.println(driver.getCurrentUrl().equals("https://www.facebook.com")); 不要使用equals()尝试使用startsWith(): driver.getCurrentUrl().startsWith(“”) 或包含(): 驱动程序.getCurren

我试图将当前URL与字符串URL进行比较,但以下代码返回
false

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

不要使用
equals()
尝试使用
startsWith()

driver.getCurrentUrl().startsWith(“”)

包含()

驱动程序.getCurrentUrl()包含(“”)

这种方法会更好。
使用
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();
    }
}
结果如下:

和控制台日志中的当前URL:

当前URL:


我尝试了您的代码,而
驱动程序返回的URL是
https://www.facebook.com/“


因为您正在使用
进行
等于的检查https://www.facebook.com“
,它将返回false,因为返回的URL末尾缺少
”/“
。将其与返回的URL进行比较,或者使用
contains()
检查返回的URL是否正确。

欢迎使用stack!将
driver.getCurrentUrl()
放入一个变量中,并让我们知道当您逐步执行代码时返回的是什么。打印变量给我,但它仍然返回false。抱歉,我不清楚,当您逐步执行代码时,让我们知道
driver.getCurrentUrl()
返回的是什么,它应该是字符串,而不是布尔值是,但是绳子是什么?是不是
“http://someotherurlthanyouwereexpecting?“
很抱歉刚才看到了您编辑的评论。看起来您正在比较
https://www.facebook.com
https://www.facebook.com/
它们不相等(请注意末尾的斜杠)。但是很难说是否使用了未格式化的链接。如果返回的URL以facebook.com开始,但以与主页完全不同的内容结束,比如一些用户页面等,那么您的
.contains()
测试将在不应该通过时通过。最好的答案是将它与带有
.equals()
的“”进行比较,这样你就可以确定它是否正确。@JeffC如果你确切地知道要得到哪条路径,你就必须使用
equals()