2013-03-21 17 views
0

只要webdriver獲取它(driver.get),「註冊爲新用戶」鏈接文本就會出現在主頁上。但它仍然等待整個頁面加載執行在下面的行。如何讓webdriver儘快點擊元素,而不是加載整個頁面?

driver.findelement(By.linkText("Register as new user")).click(); 

無論其他元素出現與否,webdriver在頁面上出現時如何單擊該元素。 我正在使用:JAVA,Ubuntu。

+0

我想WebDriver需要頁面被完全加載,所以它可以正確讀取DOM。我可能會誤會,通常是我。 – aimbire 2013-03-21 17:24:03

+0

隱式等待(如果已設置)等待每個findElement調用。使用顯式等待在這裏的答案中給出,但確保隱式等待被刪除。 – 2013-03-24 03:24:55

回答

0

您可以更改FireFoxDriver配置文件設置,以讓Firefox不等待完整頁面加載調用。點擊

 FirefoxProfile profile = new FirefoxProfile(); 
     profile.SetPreference("webdriver.load.strategy", "unstable"); 
2

後,我不知道隱含的等待是否使司機等到該頁面完全加載,特別是在打開URL後。但值得嘗試明確的等待。下面的代碼讓驅動等待,直到元素變成可點擊然後點擊它。如果元素在指定的時間內不可點擊(在下面的示例中設置爲30秒),則驅動程序會拋出TimeoutException

WebDriverWait wait = new WebDriverWait(driver, 30//unit time in seconds); 

wait.until(ExpectedConditions.elementToBeClickable(By.linkText("Register as new user"))).click(); 
0

支架的wait.until ......像這樣的語句:
turnOffImplicitWaits();
wait.until(ExpectedConditions.elementToBeClickable(By.linkText(「Register as new user」)))。click();
turnOnImplicitWaits();

+0

試圖將此添加爲Code Enthusiastic的回覆的評論,但無法格式化評論文本。 – 2014-10-16 19:33:49

相關問題