我有一个列表,在每个部分下都有多个链接。每个部分都有不同的链接。我需要单击每个部分下的特定链接。我已经编写了以下代码,但是当它执行时,在单击第一部分自动完成字段后,我无法单击第二部分。 这是我的代码。通过使用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();
}
});
}
}
答案 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");