org.openqa.selenium.support.ui.UnexpectedTagNameException:元素应该是“select”但是“按钮”

时间:2016-02-12 06:07:38

标签: selenium exception

我所选元素的html代码是:

我无法弄清楚为什么会出现这种错误。

1 个答案:

答案 0 :(得分:0)

尝试以下Xpath: -

//button[@class='btn btn-default form-control ui-select-match btn-default-focus']

OR

//button[@placeholder='Select or search a manufacturer in the list...']

或更具体: -

//button[@placeholder='Select or search a manufacturer in the list...' and @class='btn btn-default form-control ui-select-match btn-default-focus']

如果您的问题是元素从屏幕滚动(并且因此在标题栏之类的内容下滚动),您可以尝试将其滚动到视图中,如下所示:

private void scrollToElementAndClick(WebElement element) { 
      int yScrollPosition = element.getLocation().getY(); 
       JavascriptExecutor js = (JavascriptExecutor) driver;
       js.executeScript("window.scroll(0, " + yScrollPosition + ");"); 
       element.click(); 
}

如果需要,还可以添加静态偏移量(例如,如果页面标题高200像素且始终显示):

public static final int HEADER_OFFSET = 200; 
    private void scrollToElementAndClick(WebElement element) { 
    int yScrollPosition = element.getLocation().getY() - HEADER-OFFSET; 
    JavascriptExecutor js = (JavascriptExecutor) driver;
    js.executeScript("window.scroll(0, " + yScrollPosition + ");"); 
    element.click(); 
}

如果无效,请使用JavascriptExecutor。它是Selenium提供的一个界面,但是直接在DOM上使用它并不是一个好习惯

WebElement element= driver.findElement(By."Your Locator"));

JavascriptExecutor executor = (JavascriptExecutor) driver;
executor.executeScript("arguments[0].click();", element);

希望它会对你有所帮助:)。