如何 select 在 Selenium 的酒店预订网站中自动弹出酒店名称
how to select the auto popup hotel names in a hotel booking site in Selenium
我正在致力于实现以下酒店预订网站的自动化。我需要在第一个搜索框中输入酒店后 select 自动弹出酒店名称...我不知道该怎么做。
我浏览了 link 并单击了“演示”,然后单击了页面上出现的第一个 link。
我试图点击第一个搜索框,我需要从自动弹出列表中输入一家酒店……我不知道该怎么做,因为它没有 PAC 项目……
https://www.phptravels.net/home
public class Question1 {
WebDriver Driver = null;
WebDriverWait wait = null;
String url = "https://phptravels.com/demo/";
@BeforeTest
public void beforeTest() {
System.setProperty("webdriver.chrome.driver","src\test\resources\drivers\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("excludeSwitches",Arrays.asList("disable-popup-blocking"));
options.addArguments("--disable-popup-blocking");
Driver = new ChromeDriver(options);
Driver.manage().window().maximize();
Driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
wait = new WebDriverWait(Driver, 25);
String winHandle = Driver.getWindowHandle();
//Driver.switchTo().window(winHandle);
//new WebDriverWait(Driver, 20).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.cssSelector("iframe[title='webpush-onsite']")));
//new WebDriverWait(Driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("button#deny.button.close"))).click();
}
@Test
public void f() {
Driver.get(url);
System.out.println("*****In the main page*****");
String xpathDemo = "//*[@id=\"mega-nav-navigation\"]/div/ul[1]/li[2]/a";
Driver.findElement(By.xpath(xpathDemo)).click();
String Title = "PHPTRAVELS | Travel Technology Partner";
/*try {
wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.xpath("//*[@id=\"PopupSignupForm_0\"]/div[2]/div[1]")));
Driver.findElement(By.xpath("//*[@id=\"PopupSignupForm_0\"]/div[2]/div[1]")).click();
} catch(Exception e) {
System.out.println("No popup..."+ e.getMessage());
}
*/
String username = Driver.findElement(By.xpath("//*[@id=\"Main\"]/section[2]/div/div/div[2]/div/div/div[2]/div[2]/div/div[3]/div[2]/div")).getAttribute("innerText");
username = username.substring(6) ;
String password = username.substring(30);
System.out.println("Username text :"+username + "\npassword is:"+password);
Driver.findElement(By.xpath("//*[@id=\"Main\"]/section[2]/div/div/div[2]/div/div/div[2]/div[2]/div/div[1]/div/a")).click();
utils.HelperFunctions2.switchToWindow(Driver, Title);
Driver.findElement(By.xpath("//*[@id=\"s2id_autogen16\"]")).click();
Driver.findElement(By.xpath("/html/body/div[7]/ul")).click();
}
@AfterTest
public void afterTest() {
Driver.quit();
}
}
我已经构建了机器人、自动图像选择器等,但我从未使用过 By.xpath 方法。类名更容易使用!
public void f(){
Driver.get(url);
String getInputFocusId = "select2-input";
Driver.findElement(By.className(getInputFocusId).click();
//now focused!
String text = Driver.findElement(By.className("select2-match").getText();
//text is the first default search match of the list.
}
还有一个比较复杂的方法。
在 Selenium 中,您可以将键发送到元素。
如果输入元素获得焦点,第一个匹配项也获得焦点。
通过单击 Enter,焦点匹配将被搜索并显示在输入元素中。
最后你必须从输入元素中读取数据!
public void f(){
Driver.get(url);
String getInputFocusId = "select2-input";
WebElement element = Driver.findElement(By.className(getInputFocusId);
element.click();
//element.sendKeys(Key.DOWN);
element.sendKeys(Key.ENTER);
String text = element.getText();
//this is the text of the first search match
//if you want to get the second or third just repeat sending the DOWN key.
}
重要提示:确保 运行 每行延迟(200 毫秒是一个很好的时间)。这可以帮助您发现错误...例如,在 Instagram 身份验证过程中,我延迟了很多行,但它终于奏效了!
希望我的回答对你有帮助!!!
下面的 xpath 是第一家酒店的结果,更改索引后它将与其余元素一起处理。
将文本提交到酒店文本框后。
给出 Thread.sleep(2000);
使用下面的 xpath。希望有用
(.//ul[@class='select2-results']/following::div[@class='select2-result-label'])[2]
我正在致力于实现以下酒店预订网站的自动化。我需要在第一个搜索框中输入酒店后 select 自动弹出酒店名称...我不知道该怎么做。
我浏览了 link 并单击了“演示”,然后单击了页面上出现的第一个 link。 我试图点击第一个搜索框,我需要从自动弹出列表中输入一家酒店……我不知道该怎么做,因为它没有 PAC 项目…… https://www.phptravels.net/home
public class Question1 {
WebDriver Driver = null;
WebDriverWait wait = null;
String url = "https://phptravels.com/demo/";
@BeforeTest
public void beforeTest() {
System.setProperty("webdriver.chrome.driver","src\test\resources\drivers\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("excludeSwitches",Arrays.asList("disable-popup-blocking"));
options.addArguments("--disable-popup-blocking");
Driver = new ChromeDriver(options);
Driver.manage().window().maximize();
Driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
wait = new WebDriverWait(Driver, 25);
String winHandle = Driver.getWindowHandle();
//Driver.switchTo().window(winHandle);
//new WebDriverWait(Driver, 20).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.cssSelector("iframe[title='webpush-onsite']")));
//new WebDriverWait(Driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("button#deny.button.close"))).click();
}
@Test
public void f() {
Driver.get(url);
System.out.println("*****In the main page*****");
String xpathDemo = "//*[@id=\"mega-nav-navigation\"]/div/ul[1]/li[2]/a";
Driver.findElement(By.xpath(xpathDemo)).click();
String Title = "PHPTRAVELS | Travel Technology Partner";
/*try {
wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.xpath("//*[@id=\"PopupSignupForm_0\"]/div[2]/div[1]")));
Driver.findElement(By.xpath("//*[@id=\"PopupSignupForm_0\"]/div[2]/div[1]")).click();
} catch(Exception e) {
System.out.println("No popup..."+ e.getMessage());
}
*/
String username = Driver.findElement(By.xpath("//*[@id=\"Main\"]/section[2]/div/div/div[2]/div/div/div[2]/div[2]/div/div[3]/div[2]/div")).getAttribute("innerText");
username = username.substring(6) ;
String password = username.substring(30);
System.out.println("Username text :"+username + "\npassword is:"+password);
Driver.findElement(By.xpath("//*[@id=\"Main\"]/section[2]/div/div/div[2]/div/div/div[2]/div[2]/div/div[1]/div/a")).click();
utils.HelperFunctions2.switchToWindow(Driver, Title);
Driver.findElement(By.xpath("//*[@id=\"s2id_autogen16\"]")).click();
Driver.findElement(By.xpath("/html/body/div[7]/ul")).click();
}
@AfterTest
public void afterTest() {
Driver.quit();
}
}
我已经构建了机器人、自动图像选择器等,但我从未使用过 By.xpath 方法。类名更容易使用!
public void f(){
Driver.get(url);
String getInputFocusId = "select2-input";
Driver.findElement(By.className(getInputFocusId).click();
//now focused!
String text = Driver.findElement(By.className("select2-match").getText();
//text is the first default search match of the list.
}
还有一个比较复杂的方法。 在 Selenium 中,您可以将键发送到元素。
如果输入元素获得焦点,第一个匹配项也获得焦点。 通过单击 Enter,焦点匹配将被搜索并显示在输入元素中。 最后你必须从输入元素中读取数据!
public void f(){
Driver.get(url);
String getInputFocusId = "select2-input";
WebElement element = Driver.findElement(By.className(getInputFocusId);
element.click();
//element.sendKeys(Key.DOWN);
element.sendKeys(Key.ENTER);
String text = element.getText();
//this is the text of the first search match
//if you want to get the second or third just repeat sending the DOWN key.
}
重要提示:确保 运行 每行延迟(200 毫秒是一个很好的时间)。这可以帮助您发现错误...例如,在 Instagram 身份验证过程中,我延迟了很多行,但它终于奏效了!
希望我的回答对你有帮助!!!
下面的 xpath 是第一家酒店的结果,更改索引后它将与其余元素一起处理。
将文本提交到酒店文本框后。 给出 Thread.sleep(2000); 使用下面的 xpath。希望有用
(.//ul[@class='select2-results']/following::div[@class='select2-result-label'])[2]