1

Я использую Selenium + Eclipse. Мне нужно выбрать элемент из раскрывающегося меню, но у меня проблема, возможно, элемент не найден. Мой код ниже:Я не могу выбрать из выпадающего меню через Selenium Webdriver

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

    } 

} 

Я пробовал разные локаторы, но это не помогает.

+1

'может быть элемент не может быть найден' ... Может быть? Вы хотите, чтобы мы догадались, что не так с вашим кодом? – Andersson

+0

Обратитесь к [Как спросить] (http://stackoverflow.com/help/how-to-ask). В частности, просьба дать описание того, что происходит, вы получаете сообщение об ошибке? Если так, то, что это? Также, пожалуйста, укажите соответствующий html. Благодаря! – mrfreester

ответ

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

Объяснение: Сначала нажмите на From элемента с помощью XPATH локатора, а затем ждать, пока элемент, который вы хотите нажать на него. Для wait у меня есть способ Explicit wait.

Здесь, в моем примере, я хочу нажать на Bengaluru, поэтому на основе Bengaluru, я создал xpath для города Bengaluru.

Если вы хотите нажать какой-либо другой город вместо Bengaluru, тогда вам нужно написать правильный xpath для этого города.

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(); 
Смежные вопросы