[英]Why doesn't Selenium find element by xpath?
當我運行以下程序時,為什么控制台會打印“0”? 我希望打印“1”,因為我希望findElements()
方法使用 xpath 查找鏈接。 xpath 表達式不正確嗎? 通過選擇鏈接元素並復制給定的 xpath,我使用 Firefox、Firebug 和 Firepath 獲得了表達式。
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.By;
import java.util.List;
public class SeleniumSearch {
static WebDriver driver = new FirefoxDriver();
public static void main(String[] args) {
try {
driver.get("http://www.google.co.uk/");
submitSearch("selenium");
getHit();
}
finally {
driver.close();
}
}
static void submitSearch(String search) {
WebElement searchBox = driver.findElement(By.name("q"));
searchBox.sendKeys(search);
searchBox.submit();
}
static void getHit() {
List<WebElement> hits = driver.findElements(By.xpath("html/body/div[5]/div[4]/div[9]/div[1]/div[3]/div/div[3]/div[2]/div/div/div/div[2]/div[1]/div/h3/a"));
System.out.println(hits.size());
}
}
嘗試將以下內容作為 xpath 而不是實際路徑: //*[@id="rso"]/div[2]/div[1]/div/h3/a
xpath("html/body/div[5]/div[4]/div[9]/div[1]/div[3]/div/div[3]/div[2]/div/div/div/div[2]/div[1]/div/h3/a")
使用 xpath 是錯誤的,在網站上稍作改動,您的代碼將無法工作! 嘗試更動態地找到最接近的 id 或標簽名稱並從那里繼續,你能分享你的 html 源代碼嗎?
我會使用一個簡單的xpath,比如html/body//h3/a
。 您還可以使用 FireBug 的 FirePath 擴展來構建和評估 xpath。
我可以想出的最簡單的 xpath 用於谷歌搜索中的第一個鏈接:
(//h3/a)[1]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.