java - 如何使用 Selenium Java 处理 https://www.spicejet.com/ 的 PASSENGERS 字段的静态下拉列表
问题描述
我在 Spice jet 网站上练习自动化。这里给出我写的代码。
package NewPackage;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.Select;
public class HandlingStaticDropdowns
{
public static void main(String[] args)throws Exception
{
System.setProperty("webdriver.chrome.driver","C:\\SeleniumJars\\chromedriver.exe");
WebDriverdriver=new ChromeDriver();
driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
driver.get("https://www.spicejet.com/");
Select s = newSelect(driver.findElement(By.id("ctl00_mainContent_ddl_Adult")));
s.selectByValue("3");
s.selectByIndex(6);
s.deselectByVisibleText("5");
}
}
我没有得到正确的输出。请帮助我,让我知道我做错了什么。
解决方案
PASSENGERS字段包含 3(三个)下拉列表,一个用于 Adult 的数量,一个用于Child的数量,另一个用于Infant的数量。要为Adult选择5,为Child选择3,为Infant选择1 ,您需要为 the诱导WebDriverWait,您可以使用以下 Locator Strategies:visibilityOfElementLocated()
代码块:
public class A_demo { public static void main(String[] args) throws Exception { System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe"); ChromeOptions options = new ChromeOptions(); options.addArguments("start-maximized"); options.setExperimentalOption("useAutomationExtension", false); options.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation")); WebDriver driver = new ChromeDriver(options); driver.get("https://www.spicejet.com/"); new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("div#divpaxinfo"))).click(); Select selectAdult = new Select(new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("div#divpaxOptions div.passengers-wrap2 p>select[name$='_Adult']")))); selectAdult.selectByVisibleText("5"); Select selectChild = new Select(new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("div#divpaxOptions div.passengers-wrap2 p>select[name$='_Child']")))); selectChild.selectByVisibleText("3"); Select selectInfant = new Select(new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("div#divpaxOptions div.passengers-wrap2 p>select[name$='_Infant']")))); selectInfant.selectByVisibleText("1"); } }
浏览器快照:
推荐阅读
- python - Python。如何从字典中复制一个值并将该值放入另一个列表中的键
- javascript - 基于laravel jquery javascript中的组合选择自动填充文本字段
- aws-iot - 物联网消息跨区域发布/订阅(不同区域的端点)
- java - Spring/REST 没有找到杰克逊 json 转换器
- coffeescript - 如何在 WDIO Testrunner + Mocha 中连接两个编译器 CoffeeScript 和 Babel?
- flutter - 在 TextField 中设置数字的间隔
- sql - 重写 SQL 以获得最佳性能(oracle)
- javascript - 基于 Javascript 变量值的多个 SVG 动画的设置时间已过
- android - 从 Firebase 获取数据
- c# - 我对在控制器和视图之间多次传递数据感到非常困惑