2014-03-04 58 views
0

我正在學習硒。我正嘗試使用硒將我的Facebook數據下載到我的本地。我無法點擊Facebook上的下載檔案按鈕。我嘗試了下面的選項。無法點擊Facebook中的下載檔案按鈕

driver.findElement(By.xpath("html/body/div[2]/div[2]/div[1]/div/div[2]/div/div/div/div[1]/form/button")).click; 

源代碼:

<form id="u_jsonp_3_0" onsubmit="return window.Event && Event.__inlineSubmit && Event.__inlineSubmit(this,event)" method="post" action="https://www.facebook.com/dyi/download?x=Adm4f5xH8GLlCGdN" rel="async"> 
<input type="hidden" autocomplete="off" value="AQBnnWIM" name="fb_dtsg"> 
<button class="_42ft _42fu selected _42gz _42gy" type="submit" value="1">Download Archive</button> 
</form> 

任何想法將是很有益的。

回答

0

首要的是,不要嘗試像這樣構建XPATH。我認爲這會導致你這些問題。更好地嘗試一些如下,

//a[@type='submit' and contains(., "Download Archive")] 

,如果你仍然需要幫助,請你分享,你有你的堆棧跟蹤或異常。

0

首先嚐試避免這麼長的xpath,頁面可能會動態改變,導致您的測試用例失敗。你可以使用id,name,class..etc等屬性直接與他們聯繫。

如果你想學習,臉譜或谷歌不是一個好的開始,因爲他們有動態的ID(ID每次加載頁面時都會改變)。

但在上述情況下,這應該工作:

driver.findElement(By.xpath("//button[contains(., 'Download Archive')]")).click(); 

您可以使用Implicit or Explicit Wait等待元素知名度,

new WebDriverWait(driver, 30).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//button[contains(., 'Download Archive')]"))).click();