Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何选择Selenium中没有名称或ID的下拉列表_Java_Selenium - Fatal编程技术网

Java 如何选择Selenium中没有名称或ID的下拉列表

Java 如何选择Selenium中没有名称或ID的下拉列表,java,selenium,Java,Selenium,我无法选择没有相关属性的下拉列表。在HTML代码下面,可以看到有一个select标记,但没有id或名称。如何在Selenium中选择该标记 <!DOCTYPE html> <html> <body> <select> <option value="volvo">Volvo</option> <option value="saab">Saab</option> <option val

我无法选择没有相关属性的下拉列表。在HTML代码下面,可以看到有一个select标记,但没有id或名称。如何在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>

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

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

  • s.selectByValue(“萨博”)
  • s.selectByVisibleText(“萨博”)
  • s.selectByIndex(1)

实际上,这里的问题是,您的元素位于
iFrame
中,因此首先您需要在页面中找到正确的
iFrame
,即使用名称
iframesult
,然后切换到它

然后,您可以找到标记名本身的同一下拉列表: 使用下面的代码,并让我知道如果有任何问题

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);

您的代码有一半是正确的,首先您必须切换到帧,然后尝试从下拉列表中选择值。正确的代码应如下所示:

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");

    }
}

您需要先切换到
iframe
,然后再切换到frame才能找到元素。首先到frame,然后转到select,“Saab”中的“S”应该是大写字母,谢谢大家的回答。如果我的问题有用的话,请投票表决。
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");

    }
}