Когато стартирам следната програма, защо е "0"отпечатани в конзолата? Очаквах "1" да бъде отпечатан, тъй като очаквах метода findElements () да намеря връзка, използвайки xpath. Изразът xpath е неправилен? Получих израза с Firefox, Firebug и Firepath, като избирам елемента на връзката и копирам дадения xpath.
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());
}
}
Отговори:
2 за отговор № 1Опитайте да поставите следното като xpath вместо действителната пътека: // * [@ ID = "RSO"] / DIV [2] / DIV [1] / DIV / h3 / а
1 за отговор № 2
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, една малка промянав уеб сайта и кодът ви няма да работи! опитайте да го направите по-динамичен Намерете най-близкия идентификатор или име на маркер и продължете оттам, можете ли да споделите вашия html източник?
1 за отговор № 3
Бих използвал обикновен xpath като html/body//h3/a
, Можете също така да използвате разширението FirePath на FireBug, за да изградите и оцените xpaths.
1 за отговор № 4
Simplest xpath Бих могъл да измислям първата връзка в Google Търсене:
(//h3/a)[1]