【问题标题】:WebDriver not identifying WebElementWebDriver 未识别 WebElement
【发布时间】:2015-06-24 11:10:42
【问题描述】:

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

但该元素未被识别。遇到 NosuchElementException。 谁能帮帮我。我想点击图片中突出显示的下拉值。

【问题讨论】:

    标签: selenium selenium-webdriver


    【解决方案1】:

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

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

    或者考虑搜索包含文本的元素,而不是匹配整个文本。

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

    正如 cathal 所提到的,您正在搜索 div 而不是 span。

    编辑:根据您的要求(尽管我不相信“后代”和“//”之间存在区别。

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

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

    【讨论】:

    • 包含方法有效。你能详细说明这个方法吗? contains(.,'Dwarka, New') .
    • 如果你可以用节点后代写同样的话。
    【解决方案2】:

    我没有看到您的元素周围有任何跨度,请尝试以下操作:

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

    【讨论】:

    • 这也行不通。你能访问magicbricks.com/ 并输入delhi ni 文本框。然后将显示一个列表。我正在考虑这种情况。
    【解决方案3】:

    试试这个:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-05
      • 2012-08-09
      • 1970-01-01
      • 1970-01-01
      • 2019-03-17
      • 1970-01-01
      • 1970-01-01
      • 2018-08-24
      相关资源
      最近更新 更多