在这里,我尝试使用 selenium 脚本从下拉列表中选择一个值,但我在控制台中收到此错误,例如
“线程“main”org.openqa.selenium.support.ui.UnexpectedTagNameException 中出现异常:元素应该是“select”,但却是“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("[email protected]");
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);
下拉列表中有多个值,我需要在其中选择一个值..
错误显示您正在使用
<span>
标签而不是 Select
。
您要查找的
Select
元素是 //*[@id="signup-username"]
。
WebDriverWait
等待定位器:
WebDriverWait wait = new WebDriverWait(webDriver, timeoutInSeconds);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id<locator>));
ExpectedConditions
等待...
希望这对您有帮助!
这个错误信息...
"Exception in thread "main" org.openqa.selenium.support.ui.UnexpectedTagNameException: Element should have been "select" but was "span"
...意味着您已使用
Select
类与所需元素进行交互,其中该元素是 <span>
。
选择一个值,例如使用 Selenium 从下拉列表中输入用户名,您可以使用以下解决方案:
代码块:
driver.get("https://ecabportal.azurewebsites.net/dashboard");
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.name("email"))).sendKeys("[email protected]");
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();
浏览器快照:
注:
elementToBeClickable()
方法之前,始终为 click()
引入 WebDriverWait。
invisibilityOfElementLocated()
引发 WebDriverWait,然后调用所需的
click()
。如果 html 中没有 select 标签并且仍然出现 org.openqa.selenium.support.ui.UnexpectedTagNameException: Element Should had was "select" but was "div" 的错误该怎么办