首页 > 解决方案 > 如何使用 Selenium Webdriver 简化以下代码?

问题描述

<div class="col autocomplete theme-standard pin-left" data-control="autocomplete" data-auto-pos="true">

    <label class="text autocomplete-arrow icon-before" id="FH-origin-label">
        <span class="label">Leaving from</span>

        <span class="visuallyhidden">City or airport</span>

        <input type="text" name="FrAirport" data-canonic="origin" id="FH-origin" data-minchar="3" data-provide="autocomplete" data-template="#uitk-autocomplete-default" data-theme="autocomplete" data-closetext="Close" data-continuetext="Continue typing to refine search" data-lob="PACKAGES" data-mask="95" data-version="v4" data-locale="en_US" data-forceicon="flights" data-autoselect="touch" data-selectioncallback="publishingWizardPackageTypeAheadOriginCallback" placeholder="City or airport" xpath="1">
        <span class="icon icon-location" aria-hidden="true"></span>
    </label>

    <div class="autocomplete-dropdown"></div>
</div>

我正在尝试使用 chrome webdriver 使用 while 循环选择以下网站上的“离开”部分之一:https://alaskatrips.poweredbygps.com/g/pt/hotels?MDPCID=ALASKA-US.TPS.BRAND。酒店.HOTEL

我试过下面的代码:

    package dropdowns;

    import java.util.concurrent.TimeUnit;
    import org.openqa.selenium.By;
    import org.openqa.selenium.Keys;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.chrome.ChromeDriver;

    public class synchronization {

     public static void main(String[] args) throws InterruptedException {

       System.setProperty("webdriver.chrome.driver",
        "C:\\Users\\everybody\\Desktop\\selenium\\library\\chromedriver.exe");
       WebDriver driver = new ChromeDriver();
       driver.get("https://alaskatrips.poweredbygps.com/g/pt/hotels?MDPCID=ALASKA-US.TPS.BRAND.hotels.HOTEL");
       driver.manage().window().maximize();
       driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);

       WebElement a = driver.findElement(By.id("FH-origin"));

       a.sendKeys("NEW");
       while (!a.equals("New Haven, CT (HVN-All Airports)")) {
        //Thread.sleep(4000);
        driver.findElement(By.id("FH-origin")).sendKeys(Keys.ARROW_DOWN);

        driver.findElement(By.id("FH-origin")).sendKeys(Keys.ENTER);
       }

标签: seleniumwebdriver

解决方案


这是你要找的吗?

while (!a.getText().equals("New Haven, CT (HVN-All Airports)")) {
            Thread.sleep(4000); //what is the need of this Thread sleep?
            driver.findElement(By.id("FH-origin")).sendKeys(Keys.ARROW_DOWN); 
        }
driver.findElement(By.id("FH-origin")).sendKeys(Keys.ENTER);

我只是根据我的假设修复了你的代码

发布 HTML 将帮助其他 SO 用户找到您问题的答案


推荐阅读