如何从下拉框中选择建议值

时间:2019-04-10 21:14:39

标签: selenium selenium-chromedriver

在Virgintrains.co.uk网站上尝试选择到达火车站

在我的代码中,我可以选择出发地点,在下一个字段中,我想选择一个到达地点,然后选择日期。

我正在发出的问题发送到达位置的名称,但是它没有提交它,而是移至下一个字段。

我尝试使用Tab键,以便转到下一个字段,我尝试通过可见测试进行选择,

`import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
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 VirginTrains {

    @SuppressWarnings("null")
    public static void main(String[] args) throws InterruptedException {

        String projectPath = System.getProperty("user.dir");
        System.out.println("projectPath : " + projectPath);

        //Opens virgintrains webpage
        System.setProperty("webdriver.chrome.driver", projectPath + "\\drivers\\chromedriver\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        driver.get("https://www.virgintrains.co.uk/");

        //The following maximise the screen size
        driver.manage().window().maximize();

        //The following selects the Departure train station
        WebElement textBoxDep = driver.findElement(By.name("origin_station"));
        textBoxDep.sendKeys("London Euston");

        //ADD WAIT STATMENT
                //Thread.sleep(10000);

THIS SECTION BELOW IS WHERE I AM HAVING THE ISSUE

        // Following selects the Arrival train station
        WebElement textBoxArr = driver.findElement(By.name("destination_station")); 
        textBoxArr.sendKeys("   Manchester Piccadilly");
       // WebElement option = null;
        //option.click();

      //ADD WAIT STATMENT
            Thread.sleep(10000);

        WebElement webElement = null;
        webElement.sendKeys(Keys.TAB);

        WebElement webElement2 = null;
        webElement2.sendKeys(Keys.TAB);`

我希望代码选择所需的火车站,然后移至日期字段。

实际结果是它正在填充字段,而不是选择桩号并移至下一个字段。

1 个答案:

答案 0 :(得分:1)

您正在尝试将Tab键发送给空元素。不用分开位置和按Tab键,而是将它们放在同一行:

textBoxDep.sendKeys("London Euston" + Keys.TAB);

textBoxArr.sendKeys("Manchester Piccadilly" + Keys.TAB + Keys.TAB);

此外,不建议使用Thread.sleep。您可以先等待特定条件再继续操作。有关在此处等待的更多信息:https://www.toolsqa.com/selenium-webdriver/wait-commands/