如何使用 selenium java 从下拉列表中打印选定的选项?
How to print selected option from drowdown by using selenium java?
只想在 select 从下拉列表中选择选项后打印 selected 选项的值。
package Webbasics;
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 ecommerce {
public static void main(String args[]) throws InterruptedException {
System.setProperty("webdriver.chrome.driver","C:\Program Files\selenium\chromedriver.exe");
WebDriver driver=new ChromeDriver();
driver.get("http://live.demoguru99.com/index.php/");
driver.manage().window().maximize();
driver.findElement(By.xpath("//*[@id=\"nav\"]//li[1]/a")).click();
Select sortBy=new Select(driver.findElement(By.xpath("(//select[contains(@title,\"Sort By\")])[1]")));
sortBy.selectByIndex(1);
Select sortBy1=new Select(driver.findElement(By.xpath("(//select[contains(@title,\"Sort By\")])[1]")));
WebElement selected=sortBy1.getFirstSelectedOption();
System.out.println(selected.getText());
}
}
我得到了正确的结果,但我认为这不是最好的写法 select class 两次所以你能帮我写得更好吗
您在 select 下拉元素之后再次找到元素的方法是正确的,但是在 selected 之后您应该等待一段时间才能再次显示该元素。
见以下代码:
Select sortBy = new Select(driver.findElement(By.xpath("(//select[contains(@title,'Sort By')])[1]")));
sortBy.selectByIndex(1);
//wait here
WebDriverWait wait = new WebDriverWait(driver, 20);
sortBy = new Select(wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("(//select[contains(@title,'Sort By')])[1]"))));
System.out.println(sortBy.getFirstSelectedOption().getText());
但在上面我再次找到该元素,但没有为下拉列表创建新的变量名称,仍然是 sortBy
。尽管通过初始化,新变量也应该可以工作。
不要忘记导入以下内容:
import org.openqa.selenium.support.ui.WebDriverWait;
import org.openqa.selenium.support.ui.ExpectedConditions;
Reference discussion
首先,您必须等待元素可见。
其次,使用此代码
Select select = new Select("Element");
WebElement tmp = select.getFirstSelectedOption();
只想在 select 从下拉列表中选择选项后打印 selected 选项的值。
package Webbasics;
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 ecommerce {
public static void main(String args[]) throws InterruptedException {
System.setProperty("webdriver.chrome.driver","C:\Program Files\selenium\chromedriver.exe");
WebDriver driver=new ChromeDriver();
driver.get("http://live.demoguru99.com/index.php/");
driver.manage().window().maximize();
driver.findElement(By.xpath("//*[@id=\"nav\"]//li[1]/a")).click();
Select sortBy=new Select(driver.findElement(By.xpath("(//select[contains(@title,\"Sort By\")])[1]")));
sortBy.selectByIndex(1);
Select sortBy1=new Select(driver.findElement(By.xpath("(//select[contains(@title,\"Sort By\")])[1]")));
WebElement selected=sortBy1.getFirstSelectedOption();
System.out.println(selected.getText());
}
}
我得到了正确的结果,但我认为这不是最好的写法 select class 两次所以你能帮我写得更好吗
您在 select 下拉元素之后再次找到元素的方法是正确的,但是在 selected 之后您应该等待一段时间才能再次显示该元素。
见以下代码:
Select sortBy = new Select(driver.findElement(By.xpath("(//select[contains(@title,'Sort By')])[1]")));
sortBy.selectByIndex(1);
//wait here
WebDriverWait wait = new WebDriverWait(driver, 20);
sortBy = new Select(wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("(//select[contains(@title,'Sort By')])[1]"))));
System.out.println(sortBy.getFirstSelectedOption().getText());
但在上面我再次找到该元素,但没有为下拉列表创建新的变量名称,仍然是 sortBy
。尽管通过初始化,新变量也应该可以工作。
不要忘记导入以下内容:
import org.openqa.selenium.support.ui.WebDriverWait;
import org.openqa.selenium.support.ui.ExpectedConditions;
Reference discussion
首先,您必须等待元素可见。 其次,使用此代码
Select select = new Select("Element");
WebElement tmp = select.getFirstSelectedOption();