【问题标题】:How to Select Dropdown which does not have a Name or ID in Selenium如何在 Selenium 中选择没有名称或 ID 的下拉菜单
【发布时间】:2017-09-10 00:21:12
【问题描述】:

我无法选择没有关联属性的下拉菜单。在 HTML 代码下方,可以看到有一个 select 标签,但没有 id 或 name。如何在 Selenium 中选择该标签?

<!DOCTYPE html>
<html>
<body>

<select>
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="opel">Opel</option>
  <option value="audi">Audi</option>
</select>

</body>
</html>

下面是该下拉菜单所在的网站。 网址:https://www.w3schools.com/tags/tryit.asp?filename=tryhtml_select

我已经尝试从文档的根目录,跟随兄弟等,但没有任何结果。 我得到 NOSUCELEMENT 异常

这就是原因,我在这里发布一个问题。

以下是我的代码,

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.Select;

public class X 
{  
    public static void main(String[] args) throws InterruptedException {
        System.setProperty("webdriver.chrome.driver", "D:\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        driver.get("https://www.w3schools.com/tags/tryit.asp?filename=tryhtml_select");
        WebElement element= driver.findElement(By.xpath("/html/body/select"));
        Select s = new Select(element);
        s.selectByValue("saab");
    }
}

【问题讨论】:

  • 需要先切换到iframe才能找到元素。
  • 先来frame再去select,“Saab”中的“S”应该是大写

标签: java selenium


【解决方案1】:

实际上这里的问题是,你的元素在iFrame 所以首先你需要在你的页面中找到正确的iFrame 即名称iframeResult 并切换到它。

然后您可以使用标记名本身找到相同的下拉列表: 使用以下代码,如果有任何问题,请告诉我

driver.get("https://www.w3schools.com/tags/tryit.asp?filename=tryhtml_select");
driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);

driver.switchTo().frame("iframeResult");
WebElement element = driver.findElement(By.tagName("select"));
Select select = new Select(element);
select.selectByIndex(1);

【讨论】:

    【解决方案2】:

    首先,单击您的元素以展开下拉列表:
    s.click()

    接下来尝试以下方法之一:

    • s.selectByValue("saab")
    • s.selectByVisibleText("saab")
    • s.selectByIndex(1)

    【讨论】:

    • 感谢大家的回答。如果觉得有用,请点赞我的问题。
    【解决方案3】:

    您的代码是正确的,首先您必须切换到框架,然后尝试从下拉菜单中选择值。你正确的代码应该是这样的:

    public class X 
    {  
        public static void main(String[] args) throws InterruptedException {
            System.setProperty("webdriver.chrome.driver", "D:\\chromedriver.exe");
            WebDriver driver = new ChromeDriver();
            driver.get("https://www.w3schools.com/tags/tryit.asp?filename=tryhtml_select");
            driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
    
            driver.switchTo().frame("iframeResult");
            WebElement dropdownBrands = driver.findElement(By.xpath("/html/body/select"));
            Select s = new Select(dropdownBrands);
            s.selectByVisibleText("Saab");
    
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-09
      • 2023-01-19
      • 2018-02-04
      • 1970-01-01
      • 2014-02-26
      • 1970-01-01
      • 2023-03-25
      相关资源
      最近更新 更多