我使用Selenium + Eclipse。我需要从下拉菜单中选择项目,但我有一个问题,也许找不到元素。我的代码如下:
package firstTC;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.chrome.ChromeDriver;;
public class Testcase {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "C:\\Users\\nazar\\Desktop\\New folder\\chromedriver.exe");
ChromeDriver driver = new ChromeDriver();
driver.get("https://www.goindigo.in/");
driver.manage().timeouts().implicitlyWait(40, TimeUnit.SECONDS);
Select oSelect = new Select(driver.findElement(By.xpath(".//*[@id='roundWay']/form/div[1]/ul[1]/li[1]/input[1]")));
oSelect.selectByIndex(3);
}
}
我尝试过不同的定位器,但没有用。
答案 0 :(得分:1)
您所寻找的不是“下拉”。首先尝试点击它:
driver.findElement(By.xpath(".//*[@id='roundWay']/form/div[1]/ul[1]/li[1]/input[1]")).click();
然后点击子菜单:
driver.findElement(By.xpath(".//li[@data-val='IXA']")).click();
答案 1 :(得分:0)
我去过 GoIndigo 网站并尝试检查您在代码中提到的XPath。 您的代码中提到的XPath是“发件人”字段(如果我错了,请更正我),这是文本框(不是下拉列表)
所以,而不是
Select oSelect = new Select(driver.findElement(By.xpath(".//*[@id='roundWay']/form/div[1]/ul[1]/li[1]/input[1]")));
oSelect.selectByIndex(3);
你应该使用
driver.findElement(By.xpath(".//*[@id='roundWay']/form/div[1]/ul[1]/li[1]/input[1]").sendKeys("something");
答案 2 :(得分:0)
试试以下代码:
driver.get("https://www.goindigo.in/");
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.findElement(By.xpath("//input[@placeholder='From']")).click();
WebDriverWait wait = new WebDriverWait(driver, 15);
wait.until(ExpectedConditions.elementToBeClickable(driver.findElement(By.xpath("//li[@data-val='BLR']"))));
driver.findElement(By.xpath("//li[@data-val='BLR']")).click();
说明:首先使用xpath定位器单击From
元素,然后等到要单击它的元素。对于wait
,我使用了Explicit wait
方法。
此处,在我的示例中,我想点击Bengaluru
,因此基于Bengaluru
,我为Bengaluru
城市创建了一个xpath。
如果您想点击其他城市而不是Bengaluru
,那么您必须为该城市编写正确的xpath。
答案 3 :(得分:0)
您尝试使用Select
课程的方式,不是那种下拉菜单。
您的值包含<li>
个标记。用户按照代码选择您的值 -
// Click on the "From" textbox
driver.findElement(By.xpath("//div[@id='roundWay']//li/input[@placeholder='From']")).click();
// Select the required from city
driver.findElement(By.xpath("//ul[@class='city-name origin-city-name']//li[text()='Bagdogra (IXB)']")).click();