如何在selenium 3中处理自动建议web元素

时间:2017-08-05 01:08:00

标签: java selenium selenium-webdriver

我是自动化测试的新手,在booking.com网站上尝试使用selenium 3时遇到困难

有自动建议文本框,当您输入单词时,显示自动建议,您可以从列表中点击,即新加坡市中心

enter image description here

尝试使用xpath id("basiclayout")/div[@class="leftwide rilt-left"]/div[@class="sb-searchbox__outer"]/form[@id="frm"]/div[@class="sb-searchbox__row u-clearfix"]/div[1]/div[@class="c-autocomplete sb-destination"]/ul[@class="c-autocomplete__list sb-autocomplete__list -visible"]/li[@class="c-autocomplete__item sb-autocomplete__item sb-autocomplete__item--city sb-autocomplete__item__item--elipsis"]

或css c-autocomplete__item sb-autocomplete__item sb-autocomplete__item--city sb-autocomplete__item__item--elipsis

当我在selenium java上运行我的测试用例时,所有场景都失败了

如何处理此类网络元素?

完整代码:

public class Selenium3Testing {
private WebDriver driver;

@Before
public void setUp() {
    String baseUrl = "https://www.booking.com/";
    System.setProperty("webdriver.chrome.driver", "src/test/resources/drivers/chromedriver.exe");
    DesiredCapabilities capabilities = new DesiredCapabilities();
    driver = new ChromeDriver(capabilities);
    driver.get(baseUrl);
}

@After
public void tearDown() {
    driver.quit();
}

@Test
public void openBookingDotCom() {
    driver.findElement(By.id("ss")).click();
    driver.findElement(By.id("ss")).clear();
    driver.findElement(By.id("ss")).sendKeys("Singapore");
    //click on auto suggestion row number 2
    driver.findElement(By.css("c-autocomplete__item sb-autocomplete__item sb-autocomplete__item--city sb-autocomplete__item__item--elipsis")).click();
    } 
}

1 个答案:

答案 0 :(得分:1)

我只是从手机输入,所以没有代码,这就是我们可以做到的方式。

为了输入输入框,我希望如果我们在sendkeys中传递总字数,建议可能无法加载或延迟。因此,我遵循的最佳方式是传递每个角色。对于每个角色,可以睡觉说300毫秒。写为小方法,将循环显示单词中的所有字符。

要点击建议列表,请尝试xpath包含text..or任何一个都能正常运行。