WebDriver无法识别WebElement

时间:2015-06-24 11:10:43

标签: selenium selenium-webdriver

enter image description here

我使用 xpath =“// div [@ class ='localityKewordDropDown'] / descendant :: div [@ class ='over'] / span [text()='Dwarka,New “]

但该元素未被识别。遇到了NosuchElementException。 任何人都可以帮助我。我想点击图片中突出显示的下拉值。

3 个答案:

答案 0 :(得分:3)

它失败了,因为“新的”这个词后面有一个空格。以下应该有效。

//div[@class='localityKewordDropDown']/div/div[text()='Dwarka, New ']

或者考虑对包含文本的元素进行分类,而不是匹配整个文本。

//div[@class='localityKewordDropDown']/div/div[contains(.,'Dwarka, New')] 

正如cathal所提到的,你正在寻找div而不是跨度。

编辑:根据您的要求(虽然我不相信"后代"和" //"。

//div[@class='localityKewordDropDown']/descendant::div[text()='Dwarka, New ']
//div[@class='localityKewordDropDown']/descendant::div[contains(text(),'Dwarka, New')] 

Contains是一个xpath函数,允许您查询包含值的内容。它可以与属性,节点一起使用,但它通常对于查找包含文本的元素最有用。这是因为您查询确切字符串失败的原因是因为您搜索的元素用尾随空格填充。包含查询将找到您正在寻找的元素,因为它忽略了这个尾随空格。

答案 1 :(得分:0)

我看不到你的元素周围有任何跨越,请尝试以下方法:

WebElement name = driver.findElement(By.xpath("//div[@id='keyword_suggest']//div[text()='Dwarka, New']"));

答案 2 :(得分:-1)

试试这个:

WebElement name = driver.findElement(By.xpath(“// * [contains(text()='Dwarka,New')]”));