如何处理硒中该网站“ https://www.goibibo.com/”的“来自”和“目的地”框中的自动建议。 请帮助
我已经厌倦了使用基本方法,但是无法获得自动建议下拉菜单的X路径
无法单击下拉列表
package basic;
import java.util.List;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
public class goibibo {
public static void main(String[] args) throws InterruptedException {
// TODO Auto-generated method stub
WebDriver driver = new ChromeDriver();
driver.get("https://www.goibibo.com/");
new WebDriverWait(driver, 20)
.until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@id='gosuggest_inputSrc']")))
.sendKeys("Mum");
List<WebElement> myList = new WebDriverWait(driver, 20).until(
ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath("//*[@id=\"react-autosuggest-1\"]")));
for (WebElement element : myList) {
if (element.getText().contains("Mumbai"))
;
element.click();
}
}
}
答案 0 :(得分:2)
首先,如何在Chrome浏览器中查找自动填充框的XPATH打开网站,而不是单击检查元素并立即单击源选项卡,单击以打开自动填充框并按 F8 暂停调试器的键。然后单击“元素”选项卡,您可以轻松获取xpath参考下面的快照,以获取更多信息。因此它将冻结您的HTML。
现在单击Elements并创建自己的xpath。
第二个如何在Firefox中查找“自动填充”框的xpath-打开Firefox,然后右键单击并单击网站上的检查元素。有动画选项,因此它将打开所有DOM扩展,如下图所示。因此,通过阅读此dom结构,您可以轻松创建XPATH。
不是如何从自动填充框中查找元素。为此,请参见下面的代码段。
package com.software.testing;
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
public class Testingclass extends DriverFactory {
private static WebDriver driver = null;
public static void main(String[] args) throws InterruptedException {
System.setProperty("webdriver.chrome.driver", "your driver path");
driver = new ChromeDriver();
driver.get("https://www.goibibo.com/");
new WebDriverWait(driver, 20)
.until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@id='gosuggest_inputSrc']")))
.sendKeys("A");
Thread.sleep(1000);
List<WebElement> myList = new WebDriverWait(driver, 20).until(ExpectedConditions.presenceOfAllElementsLocatedBy(
By.xpath("//div[@class='dib marginL10 pad0 textOverflow width90']/div/span")));
for (int i = 0; i < myList.size(); i++) {
System.out.println(myList.get(i).getText());
if (myList.get(i).getText().equals("Ahmedabad")) {
myList.get(i).click();
break;
}
}
}
}
在条件语句之后不要忘记使用break,否则 将引发异常。
答案 1 :(得分:0)
因此您可以尝试一种解决方案,请找到以下屏幕截图,
如您在屏幕快照中所见,如果我在文本框中键入M,则下拉列表将显示记录相对于字母'M'的情况;如果您在源代码中看到<ul>
,则它是动态的,就像您在{{1 }},因此需要通过它的定位器来处理该下拉列表,因为它是动态的,因此首先需要在文本框中传递一些文本,然后需要使用<input>
从硒中选择下拉列表中的元素{1}}或您可以使用的Select
,您可以存储下拉列表中所有受尊重的来源(孟买,迈索尔等)并明智地使用
selectByVisibleText("")
我给你一个主意让我知道是否需要任何进一步的帮助
答案 2 :(得分:0)
使用下面的代码将起作用
masterBranch