org.openqa.selenium.support.ui.UnexpectedTagNameException:元素应该是“选择";但是是“跨度"在选择下拉值时
在这里,我尝试使用 selenium 脚本从下拉列表中选择一个值,但我在控制台中收到此错误,例如
<块引用>线程main"中的异常 org.openqa.selenium.support.ui.UnexpectedTagNameException:元素应该是select",但是是span"..
公共类 HomeUserManagement {公共静态无效主要(字符串参数[]){System.setProperty("webdriver.chrome.driver","C:\Users\UMASHANKAR\Documents\selenuim\chromedriver.exe");WebDriver driver=new ChromeDriver();driver.manage().window().maximize();//用于登录driver.get("https://ecabportal.azurewebsites.net/dashboard");driver.findElement(By.name("email")).sendKeys("abc@xyz.in");driver.findElement(By.name("password")).sendKeys("abc123xyz");driver.findElement(By.name("signIn")).click();//从下拉列表中选择值的实际代码driver.get("https://ecabportal.azurewebsites.net/user");Select drpdwn=new Select(driver.findElement(By.id("select2-signup-username-container")));drpdwn.selectByVisibleText("用户名");drpdwn.selectByIndex(0);
下拉列表中有多个值,我需要在其中选择一个值..
解决方案这个错误信息...
线程main"中的异常org.openqa.selenium.support.ui.UnexpectedTagNameException:元素应该是选择";但是是跨度"
...暗示您已使用 Select
类与所需元素进行交互,因为该元素是 <span>
.
选择一个值,例如用户名使用
注意:
- 当页面发生变化(即 DOM 发生变化)时,在尝试
click()
方法之前,始终为elementToBeClickable()
引入 WebDriverWait. - 在这个特定的用例中,当您浏览到所需的页面时,您需要为
invisibilityOfElementLocated()
诱导 WebDriverWait 的覆盖,然后调用所需的click()
.
Here I am trying to select a value from dropdown using selenium script but I got this error in the console like
"Exception in thread "main" org.openqa.selenium.support.ui.UnexpectedTagNameException: Element should have been "select" but was "span"..
public class HomeUserManagement {
public static void main(String args[]) {
System.setProperty("webdriver.chrome.driver",
"C:\Users\UMASHANKAR\Documents\selenuim\chromedriver.exe");
WebDriver driver=new ChromeDriver();
driver.manage().window().maximize();
//for login
driver.get("https://ecabportal.azurewebsites.net/dashboard");
driver.findElement(By.name("email")).sendKeys("abc@xyz.in");
driver.findElement(By.name("password")).sendKeys("abc123xyz");
driver.findElement(By.name("signIn")).click();
//actual code for selecting a value from dropdown
driver.get("https://ecabportal.azurewebsites.net/user");
Select drpdwn=new Select(driver.findElement(By.id("select2-signup-username-container")));
drpdwn.selectByVisibleText("User Name");
drpdwn.selectByIndex(0);
there are multiple values in a dropdown I need to select one value in that..
解决方案This error message...
"Exception in thread "main" org.openqa.selenium.support.ui.UnexpectedTagNameException: Element should have been "select" but was "span"
...implies that you have used Select
class to interact with the desired element where as the element was a <span>
.
To select a value e.g. User Name from the dropdown using Selenium you can use the following solution:
Code Block:
driver.get("https://ecabportal.azurewebsites.net/dashboard"); new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.name("email"))).sendKeys("admin@malbork.in"); driver.findElement(By.name("password")).sendKeys("NsSaNj@0205"); driver.findElement(By.name("signIn")).click(); new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//h1[contains(., 'Dashboard')]"))); driver.get("https://ecabportal.azurewebsites.net/user"); new WebDriverWait(driver, 20).until(ExpectedConditions.invisibilityOfElementLocated(By.xpath("//div[@id='load']"))); new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("span.select2-selection.select2-selection--single>span.select2-selection__rendered"))).click(); new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//span[@class='select2-results']//li[contains(., 'User Name')]"))).click();
Browser Snapshot:
Note:
- Always induce WebDriverWait for the
elementToBeClickable()
before attemptingclick()
method when the page changes i.e. DOM changes. - In this particular usecase, when you browse to the desired page there is an overlay for which you need to induce WebDriverWait for the
invisibilityOfElementLocated()
and then invoke the requiredclick()
.
相关文章