org.openqa.selenium.support.ui.unexpectedtagname异常:元素应该是;选择";但是是",;按钮“;

org.openqa.selenium.support.ui.unexpectedtagname异常:元素应该是;选择";但是是",;按钮“;,selenium,exception,Selenium,Exception,所选元素的html代码为: 我不知道为什么会有这个错误 试试下面的Xpath:- //button[@class='btn btn-default form-control ui-select-match btn-default-focus'] 或 或者更具体地说:- //button[@placeholder='Select or search a manufacturer in the list...' and @class='btn btn-default form-control u

所选元素的html代码为:

我不知道为什么会有这个错误

试试下面的Xpath:-

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

或者更具体地说:-

//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(); 
}
如果需要,还可以添加一个静态偏移量(例如,如果您有一个200px高且始终显示的页眉):

如果不起作用,则使用
JavascriptExecutor
。这是Selenium提供的一个接口,但使用它并不是一个好的实践,因为它直接在DOM上工作

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

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

希望它能帮助您:)

您缺少html代码html代码是:第二个是在粘贴到xpath并单击Enter时定位到html代码块。但它没有定位元素…第一个和第三个xpath没有定位到html或元素..第二个是单击Enter但没有定位元素。。意思是?单击后不会发生任何事情吗?当我们将xpath粘贴到firebug xpath位置时,如果单击enter,firebug应该会找到所需的元素。单击enter后,不会发生任何事情。只需再次打开HTML代码,但不在浏览器上突出显示我们的元素。。
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(); 
}
WebElement element= driver.findElement(By."Your Locator"));

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