簡體   English   中英

為什么 Selenium 不能通過 xpath 找到元素?

[英]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());
    }
}

Firepath 給出的 xpath 的屏幕截圖

嘗試將以下內容作為 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM