自动补全版块硒

时间:2019-03-21 12:54:08

标签: selenium qa

我有一个列表,在每个部分下都有多个链接。每个部分都有不同的链接。我需要单击每个部分下的特定链接。我已经编写了以下代码,但是当它执行时,在单击第一部分自动完成字段后,我无法单击第二部分。 这是我的代码。通过使用for-each,将无法选择第二个自动完成字段。请指导我如何摆脱困境。

public class Autocomplete {

public static WebDriver driver;

public static void main(String[] args) throws InterruptedException {

    ChromeOptions option = new ChromeOptions();

    option.addArguments("--disable-notifications");

    System.setProperty("webdriver.chrome.driver",".//src//browser//chromedriver.exe");

    driver = new ChromeDriver(option);

    driver.manage().window().maximize();

    System.out.println("Browser Launch chrome");

    driver.get("https://www.redbus.in/");

    driver.findElement(By.xpath("//*[@id=\"src\"]")).sendKeys("ta");

    AutocompleteRedbus.RebBus(By.xpath("//*[@id=\"src\"]"), "Tambaram, Chennai");

    Thread.sleep(5000);

    driver.findElement(By.xpath("//*[@id=\"dest\"]")).sendKeys("pon");

    driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);

    AutocompleteRedbus.RebBus(By.xpath("//*[@id=\"dest\"]"), "Ponamaravathi");  
}

}

上面在这里提到了AutocompleteRedbus调用方法代码:

public class AutocompleteRedbus extends Autocomplete{


public static void RebBus(By xpath , String text) throws InterruptedException {

    List<WebElement> listOfLinks = driver.findElements(By.xpath("xpath"));
    listOfLinks.forEach(link -> {
        if (link.getText().equalsIgnoreCase("text")) {
            link.click();
            }
        });
    }
  }

1 个答案:

答案 0 :(得分:0)

当您尝试从自动完成器中选择值时,您使用的xpath不正确。请使用我提供的xpath更改xpath,它将正常工作。

AutocompleteRedbus.RebBus(By.xpath("//li[contains(@select-id,'results')]"), "Tambaram, Chennai");

与目标方法相同,例如:

AutocompleteRedbus.RebBus(By.xpath("//li[contains(@select-id,'results')]"), "Ponamaravathi");