Selenium Firefox/Web驱动程序无法通过XPath找到元素

Selenium Firefox/Web驱动程序无法通过XPath找到元素

问题描述:

我无法读取div内的链接。 好吧,这里的股利的样子:Selenium Firefox/Web驱动程序无法通过XPath找到元素

<div id="AjaxStream" style="clear: both"> 
<a target="_blank" href="http://www.something.com/"> 
<img height="370" width="752" border="4" usemap="#Link" src="somefile.png"> 
</a> 
</div> 

下面的代码,找到DIV工作完全正常。 (我试过element.getAttribute( “ID”) - 这回 “AjaxStream”)

WebElement element = river.findElement(By.xpath("//html/body/div/div[2]/div/div[11]")); 

这里是有什么不工作:

WebElement element = driver.findElement(By.xpath("//html/body/div/div[2]/div/div[11]/a")); 

这实际上应该罚款链接元素,但它没有。有任何想法吗? 在此先感谢。

##编辑: 没关系 - 我修好了。问题在于该元素未加载。在尝试查找元素之前,我添加了一个Thread.sleep(1000) - 现在它工作得很好。

+0

避免使用的Thread.sleep可以使用WebDriverWait.until – chaosr

看看你的xpath ...对我来说是不可读的。如果有人在几个月内晚些时候进来,他们是否能够将该xpath翻译成您要查找的标签?更好的解决方案是将id属性添加到您感兴趣的标签,然后通过该标识找到它。

+0

好了,另一种方式来获得的股利元素是这样的: // div [@ id ='AjaxStream'] 但我不想要div - 我想要它里面的链接。 :/ 另一种方法,我试图找到'a'元素:driver.findElements(By.xpath(“// a [@target ='_ blank']”)); 这会返回一些链接..但是我想要的链接丢失了。 –

+1

好吧,你可以链正确...所以在你的例子中它将是//div [@ id ='AjaxStream']/a [@target ='_ blank'] –

尝试

WebElement element = driver.findElement(By.xpath("//div[@id='AjaxStream']/a")); 
String link = element.getAttribute("href"); 

//我需要6个字符,但它是一个1“字符”修复