无法为WhitePages.com获取XPath?

时间:2015-04-09 21:31:19

标签: java selenium selenium-webdriver web-scraping screen-scraping

我正在尝试使用Selenium(在Java中)在"People"上的"Where"http://whitepages.com字段中输入名称和邮政编码。

我已尝试分别使用.//*[@id='who'].//*[@id='where'] - 但每次运行程序时Selenium都会抛出错误。

我做错了什么?

3 个答案:

答案 0 :(得分:1)

这里的关键问题是有多个元素id="who" 。使用CSS选择器在“搜索”表单中找到所需的选择器:

driver.findElement(By.cssSelector("div.callerid-skin #header form[role=search] #who"));

您可能还需要explicitly wait for the field to become visible

WebDriverWait wait = new WebDriverWait(driver, 5);
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("div.callerid-skin #header form[role=search] #who")));

答案 1 :(得分:0)

它有很多元素,id ='其中'其中有许多是隐藏的,这就是为什么它会为你抛出异常。尝试使用特定定位器

定位可见元素

For People(@id =' who')使用以下定位器

By.cssSelector("#header[style] #who[data-gaaction*='people']")

For Where(@id =' where')使用以下定位器

By.cssSelector("#header[style] #where[data-gaaction*='business']")

答案 2 :(得分:0)

如果您使用的是Firebug,则有多种选择来获取元素路径: 1.检查元素(HTML选项卡应该是活动的) 2.右键单击元素(来自HTML源代码),您将看到多个选项: - 复制XPath - 复制最小XPath - 复制CSS路径

对于有问题的元素,您可以在Notepad ++中粘贴所有3个路径并进行一些实验。它可能会节省你一些时间,而不是从最上层的父节点开始,缩小到更短的路径。