需要帮助找到以下html的Xpath - selenium--

时间:2016-07-20 10:51:29

标签: java html selenium xpath

我正在使用firebug查找xpath,这是错误控制台中显示的错误。

  

没有这样的元素:无法找到   元件:{ “方法”: “的xpath”, “选择器”: “.//*[@ ID = 'SELECT2-CONTACT_ID-结果-v0w5-258']”}

driver.findElement(By.xpath(".//*[@id='select2-contact_id-result-v0w5-258']")).click();

html如下

id="select2-contact_id-result-v0w5-258" class="select2-results__option select2-results__option--highlighted" role="treeitem" aria-selected="false">Single contact

1 个答案:

答案 0 :(得分:0)

可能有以下原因: -

  • 可能是您的id是动态生成的,因此您需要尝试使用不同的定位器来创建By对象,如下所示

    By by = By.className("select2-results__option select2-results__option--highlighted");
    

    By by = By.cssSelector(".select2-results__option select2-results__option--highlighted");
    

    By by = By.xpath("//*[contains(., 'Single contact')]");
    

    id是否未动态生成

    By by = By.id("select2-contact_id-result-v0w5-258");
    
  • 可能是您的元素位于frameiframe内,如果是,则需要在找到元素之前切换frameiframe : -

    driver.switchTo().frame("frame id or name or index");
    
  • 由于互联网速度缓慢,可能是元素未在页面上完全加载,因此您需要实施WebDriverWait以等待元素可见且可点击,如下所示: -

    WebDriverWait wait = new WebDriverWait (driver, 10);
    WebElement el = wait.until(ExpectedConditions.elementToBeClickable(by)); //use anyone of the above by object
    

现在成功获取元素后,您需要执行click,如下所示: -

el.click();

注意: - 如果您的元素实际上是带有select标记的下拉列表,那么您需要创建Select()对象以使用下拉列表,如下所示: -

Select sel = new Select(el);

//now perform step to select an option by visible text from dropdown 
sel.selectByVisibleText("your visible option text");

sel.selectByIndex("your option index");

sel.selectByValue("your option value");

希望它可以帮助你.. :)