我正在学习硒。我正在尝试使用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>
任何想法都会非常有用。
答案 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();