我是硒的新手。我正在练习在http://www.countdown.tfl.gov.uk上写一个测试用例。以下是我遵循的步骤:
直到这部分它才能正常工作。
现在在页面上,我实际上在搜索下的页面左侧获得了两条记录。我实际上是想点击第一个,即“走向Southall,Townhall”链接。什么也没发生。
以下是我的代码:
public class CountdownTest {
@Test
public void tflpageOpen(){
WebDriver driver = openWebDriver();
searchforBus(driver,"H32");
selectrouteDirection(driver)
}
//open the countdowntfl page
private WebDriver openWebDriver(){
WebDriver driver = WebDriverFactory.getWebDriver("FireFox");
driver.get("http://www.countdown.tfl.gov.uk");
return driver;
}
private void searchforBus(WebDriver driver,String search){
WebElement searchBox = driver.findElement(By.xpath("//input[@id='initialSearchField']"));
searchBox.sendKeys(search);
WebElement searchButton = driver.findElement(By.xpath("//button[@id='ext-gen35']"));
searchButton.click();
}
private void selectrouteDirection(WebDriver driver){
WebElement towardssouthallLink= driver.findElement(By.xpath("//span[@id='ext-gen165']']"));
((WebElement) towardssouthallLink).click();
}
}
请帮帮我。
感谢。
答案 0 :(得分:0)
由于您现在正在获取NoSuchElement Exception
,因此您可以尝试使用以下代码WebDriver explicit wait。
WebDriverWait wait = new WebDriverWait(driver, 15);
WebElement towardssouthallLink = wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("(//*[@id='route-search']//li/span)[1]")));
towardssouthallLink.click();
WebDriver driver = WebDriverFactory.getWebDriver("FireFox");
driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
driver.get("http://www.countdown.tfl.gov.uk");
提示:
Explicit wait
或Implicit wait
。span[@id='ext-gen165']
这样的定位器,它们是自动生成的ExtJ。#route-search li:nth-of-type(1) > span
答案 1 :(得分:0)
您没有致电selectrouteDirection
。
你可能想要:
@Test
public void tflpageOpen(){
WebDriver driver = openWebDriver();
searchforBus(driver,"H32");
selectrouteDirection(driver);
}
你也不需要在这里施放:
((WebElement) towardssouthallLink).click();
无论如何,它已经是WebElement
。
答案 2 :(得分:0)
我发现这些链接的id是动态生成的。 id的格式为'ext-genXXX',其中XXX是动态生成的数字,因此每次都会变化。
实际上,您应该尝试使用linkText:
'走向Southall,市政厅'
driver.findElement(By.linkText("Towards Southall, Town Hall")).click
'走向豪恩斯洛,巴士站'
driver.findElement(By.linkText("Towards Hounslow, Bus Station")).click
这是一个逻辑: 获取所有以'ext-gen'开头的id开头的元素&迭代它&单击带有匹配文本的链接。以下是Ruby代码(对不起,我不太了解Java):
links = driver.find_elements(:xpath, "//span[starts-with(@id, 'ext-gen')]")
links.each do |link|
if link.text == "Towards Southall, Town Hall"
link.click
break
end
end