Seleniumを新しくしました。Selenium Webdriverのボタンクリック()は、検索結果を返しません。
セレンについて詳しくは、JavaのSelenium Webドライバを使用して、ウェブサイト「https://www.findmyfare.com/」のフライト検索フローを自動化し始めました。
検索ボタンをクリックすることができました。しかし、私の検索条件の結果を生成するのではなく、エラーページを表示します。
検索を手動で実行すると、正常に動作します。
誰かがこの問題を解決するのに役立つでしょうか?
N.B.この検索ボタンは「送信」の一種ではありません。だから、私はclick()メソッドを使用しました。 (私もsubmit()で試しましたが、違いはありませんでした)。
以下は、検索をトリガーするコードセグメントです。
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.Test;
public class FlightSearchWD
{
public WebDriver driver = null;
public String baseUrl;
@Test
public void testFlightSearchWD()
{
driver = new FirefoxDriver();
driver.get("https://www.findmyfare.com/");
driver.findElement(By.id("from_1")).click();
WebElement cleartext = driver.findElement(By.id("from_1"));
cleartext.clear();
WebElement FromCity = driver.findElement(By.id("from_1"));
FromCity.sendKeys("Auckland, New Zealand (AKL)");
driver.findElement(By.id("to_1")).click();
WebElement cleartext1 = driver.findElement(By.id("to_1"));
cleartext1.clear();
WebElement ToCity = driver.findElement(By.id("to_1"));
ToCity.sendKeys("Colombo, Sri Lanka (CMB)");
WebElement FromDate = driver.findElement(By.id("date_1"));
FromDate.click();
WebElement datepicker = driver.findElement(By.id("ui-datepicker-div"));
List<WebElement> rows = datepicker.findElements(By.tagName("tr"));
List<WebElement> columns = datepicker.findElements(By.tagName("td"));
for (WebElement cell : columns)
{
// Select 20th Date
if (cell.getText().equals("20"))
{
cell.findElement(By.linkText("20")).click();
break;
}
}
// select to date
WebElement ToDate = driver.findElement(By.id("date_2"));
ToDate.click();
WebElement datepicker2 = driver.findElement(By.id("ui-datepicker-div"));
List<WebElement> rows1 = datepicker2.findElements(By.tagName("tr"));
List<WebElement> columns1 = datepicker2.findElements(By.tagName("td"));
for (WebElement cell1 : columns1)
{
// Select 20th Date
if (cell1.getText().equals("25"))
{
cell1.findElement(By.linkText("25")).click();
break;
}
}
WebElement ClickTravellers = driver.findElement(By.id("PopS"));
ClickTravellers.click();
addAdults();
addChildren();
addInfant();
WebElement clickSearch = driver.findElement(By.id("search_flight_submit"));
clickSearch.click();
}
private void addAdults()
{
while (true)
{
WebElement popOverBtnGrp = driver
.findElement(By.xpath("//div[@class='btn-group col-xs-12 col-md-12 col-sm-12']"));
if (popOverBtnGrp.isDisplayed())
{
try
{
WebElement NoOfTravellers = driver.findElement(By.xpath(
"//button[@class='btn add_people ripple-effect btn-default btn-sm col-xs-2 col-md-4 col-sm-4']"));
for (int i = 0; i < 1; i++)
{
NoOfTravellers.click();
}
break;
} catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
private void addChildren()
{
while (true)
{
WebElement popOverBtnGrp = driver
.findElement(By.xpath("//div[@class='btn-group col-xs-12 col-md-12 col-sm-12']"));
if (popOverBtnGrp.isDisplayed())
{
try
{
WebElement NoOfTravellers = driver.findElement(By.xpath("//button[@class=' add_people btn btn-default btn-sm ripple-effect col-xs-2 col-md-4 col-sm-4' and @data-id='childrens']"));
for (int i = 0; i < 1; i++)
{
NoOfTravellers.click();
}
break;
} catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
private void addInfant()
{
while (true)
{
WebElement popOverBtnGrp = driver
.findElement(By.xpath("//div[@class='btn-group col-xs-12 col-md-12 col-sm-12']"));
if (popOverBtnGrp.isDisplayed())
{
try
{
WebElement NoOfTravellers = driver.findElement(By.xpath("//button[@class='add_people btn btn-default btn-sm ripple-effect col-xs-2 col-md-4 col-sm-4' and @data-id='infants']"));
for (int i = 0; i < 1; i++)
{
NoOfTravellers.click();
}
break;
} catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
質問にコードを追加してください – Guy
検索をトリガするコードを追加しました。 –
ボタンのクリックがエラーページにリダイレクトされているので、ボタンのクリックがうまくいきます。その他のエラーがあるはずです。検索コード全体を共有していただけますか? – Harish