0

我正在 Thomson Holidays 网站 ( http://www.thomson.co.uk/holidays.html ) 上做一个示例作业。在左侧有一个假期搜索面板。我无法识别 WebDriver 中的任何这些元素。但是,在 IDE 中,这些元素是可以识别的。需要更多信息,因为这是我第一次遇到这样的问题。下面是代码示例:

WebDriver driver = new FirefoxDriver();     
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.get("http://www.thomson.co.uk/holidays.html");

driver.findElement(By.id("searchbutton")).click();


driver.findElement(By.id("holidayAttribute_1")).click();
driver.findElement(By.id("holidayAttribute_2")).click();
driver.findElement(By.id("holidayAttribute_3")).click();

Thread.sleep(5000);
4

2 回答 2

6

因为它们在 iframe 中,所以您需要先切换到 iframe。

将两行添加到现有代码中,如下所示:

WebDriver driver = new FirefoxDriver();     
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.get("http://www.thomson.co.uk/holidays.html");

// optional, unnecessary in your case
// driver.switchTo().defaultContent(); // make sure outside of all iframes

// switch to search frame
WebElement searchFrame = driver.findElement(By.cssSelector("iframe[src='/thomson/page/byo/search/usp.page']"));
driver.switchTo().frame(searchFrame);

driver.findElement(By.id("searchbutton")).click();
driver.findElement(By.id("holidayAttribute_1")).click();
driver.findElement(By.id("holidayAttribute_2")).click();
driver.findElement(By.id("holidayAttribute_3")).click();
于 2013-05-02T07:26:14.577 回答
0

搜索面板位于 iframe 内。由于 iframe 是第一个 iframe,您可以使用以下代码。

    driver.get("http://www.thomson.co.uk/holidays.html");

    // switch to search frame
    driver.switchTo().frame(0);

    driver.findElement(By.id("searchbutton")).click();
    driver.findElement(By.id("holidayAttribute_1")).click();
    driver.findElement(By.id("holidayAttribute_2")).click();
    driver.findElement(By.id("holidayAttribute_3")).click();
于 2013-05-02T08:19:05.227 回答