gpt4 book ai didi

java - 无法使用 JavascrtptExecutor 从下拉列表中选择选项

转载 作者:太空宇宙 更新时间:2023-11-04 12:09:24 26 4
gpt4 key购买 nike

任何人都可以为我提供一种从我正在练习的页面上的下拉列表中选择文本的故障保护(ish)方法吗?

https://www.club18-30.com/club18-30

具体来说,是“出发地”和“目的地”机场下拉列表。我正在使用以下代码:

   public void selectWhereFrom(String query, String whereFromSelect) throws InterruptedException {
WebElement dropDownContainer = driver.findElement(By.xpath(departureAirportLocator));
dropDownContainer.click();

selectOption(query,whereFromSelect);
}

public void selectOption(String query, String option) {
String script =
"function selectOption(s) {\r\n" +
" var sel = document.querySelector(' " + query + "');\r\n" +
" for (var i = 0; i < sel.options.length; i++)\r\n" +
" {\r\n" +
" if (sel.options[i].text.indexOf(s) > -1)\r\n" +
" {\r\n" +
" sel.options[i].selected = true;\r\n" +
" break;\r\n" +
" }\r\n" +
" }\r\n" +
"}\r\n" +
"return selectOption('" + option + "');";

javaScriptExecutor(script);
}

这似乎成功地用文本填充了该框,但是当我点击“搜索”时,我收到一条消息,说我需要选择一个选项,表明它尚未注册选择?

我宁愿避免 JavaScriptExecutor,但无法使这些 Selects 与常规 Selenium Select 机制一起工作

最佳答案

我将为每个下拉菜单设置一个函数,一个用于设置出发机场,另一个用于设置目的地机场。我已经测试了下面的代码并且它有效。

功能

public static void setDepartureAirport(String airport)
{
driver.findElement(By.cssSelector("div.departureAirport div.departurePoint")).click();
String xpath = "//div[contains(@class, 'departurePoint')]//ul//li[contains(@class, 'custom-select-option') and contains(text(), '"
+ airport + "')]";
driver.findElement(By.xpath(xpath)).click();
}

public static void setDestinationAirport(String airport)
{
driver.findElement(By.cssSelector("div.destinationAirport div.airportSelect")).click();
String xpath = "//div[contains(@class, 'destinationAirport')]//ul//li[contains(@class, 'custom-select-option') and contains(text(), '"
+ airport + "')]";
driver.findElement(By.xpath(xpath)).click();
}

你这样称呼他们

driver.get("https://www.club18-30.com/club18-30");
setDepartureAirport("(MAN)");
setDestinationAirport("(IBZ)");

我建议您使用 3 个字母的机场代码进行搜索,例如“(MAN)”代表曼彻斯特。这对于每个机场来说都是唯一的,但您可以使用文本的任何独特部分。

关于java - 无法使用 JavascrtptExecutor 从下拉列表中选择选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40002335/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com