我試圖將當前URL與字符串URL進行比較,但以下代碼返回false
。等於()無法按預期與Selenium一起工作
driver.get("https://www.facebook.com");
System.out.println(driver.getCurrentUrl().equals("https://www.facebook.com"));
我試圖將當前URL與字符串URL進行比較,但以下代碼返回false
。等於()無法按預期與Selenium一起工作
driver.get("https://www.facebook.com");
System.out.println(driver.getCurrentUrl().equals("https://www.facebook.com"));
而不是使用equals()
嘗試使用startsWith()
的:
driver.getCurrentUrl()startsWith( 「https://www.facebook.com」)
或:
司機.getCurrentUrl()。contains(「https://www.facebook.com「)
這種方法會好很多。
對於使用equals()
您需要有完全相同您期望的路徑。
但是用或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以facebook.com開頭,但以與主頁完全不同的內容結束(如某些用戶頁面等),那麼如果真的不應該這樣做,那麼您的'.contains()'測試會通過。最好的答案是用'.equals()'將它與「https://www.facebook.com/」進行比較,你會確定它是否正確。 – JeffC
@JeffC如果你確切知道你必須得到哪條路徑 - 你必須使用equals() –
我想你的代碼,並正由driver.getCurrentUrl()
返回的URL是"https://www.facebook.com/"
既然你與"https://www.facebook.com"
做一個equals
檢查,它會在返回的URL的結尾,因爲缺少'/'
的返回false。請將它與此網址進行比較,或使用檢查返回的網址是否正確。
歡迎使用堆棧!將'driver.getCurrentUrl()'放入一個變量中,並讓我們知道當您逐句通過代碼時是什麼。 – mrfreester
打印變量給我https://www.facebook.com/但它仍然返回false。 –
抱歉,我不清楚,當你逐步完成代碼時,讓我們知道'driver.getCurrentUrl()'返回的是什麼,它應該是一個字符串,而不是布爾值 – mrfreester