无法通过Selenium webdriver定位元素

时间:2016-06-02 19:34:12

标签: selenium-webdriver

我正在尝试编写一个代码,以便在两个位置之间找到最便宜的票。我陷入了代码的开头,因为selenium无法识别简单的输入文本框。这是代码。

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;

public class orbitzsimpleTest {

    public static void main(String args[]) throws InterruptedException {
        WebDriver dr = new FirefoxDriver();
        dr.navigate().to("https://www.orbitz.com/");

        Thread.sleep(5000);

        System.out.println("after threat sleep");
        dr.findElement(By.xpath(".//*[@id='flight-origin']")).sendKeys("SFO");
    }       
}

我还尝试使用包含类似

的XPath编写
List<WebElement> s = dr.findElements(By.xpath(".//*[contains(@id,'flight_*')]"));

没有运气。它看起来很简单,但我很难过去。

2 个答案:

答案 0 :(得分:0)

您可以使用dr.findElement(By.id('flight-origin'))(By.cssSelector('#flight-origin'))来获取此元素。

最好使用'智能'等待(等待元素显示/可点击/可见)而不是睡眠。因为它可能是5秒是不够的,你试图将密钥发送到尚未加载的输入。

答案 1 :(得分:0)

我想我找到了它没有认识到那个元素的原因。这是因为必须在找到此文本框之前选择航班选项卡。我能够修复它。 非常感谢您的投入。