无法单击Facebook中的“下载存档按钮”

时间:2014-03-04 20:35:43

标签: facebook selenium-webdriver

我正在学习硒。我正在尝试使用selenium将我的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>

任何想法都会非常有用。

2 个答案:

答案 0 :(得分:0)

首先,不要试图像这样建立XPATH。我认为这会导致这些问题。最好尝试以下内容,

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

如果您仍需要一些帮助,请分享您的堆栈跟踪或异常。

答案 1 :(得分:0)

首先尝试避免这么长的xpath,页面可能会动态更改,导致测试用例失败。您可以使用id,name,class..etc等属性直接访问它们。

如果你想学习,facebook或谷歌不是一个好的开始,因为他们有动态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();