我的下面的代码工作正常但现在,我正在及时响应。我不知道如何处理这个超时问题 - 请提出建议。
public void Browse_Samsung() throws Exception
{
WebDriverWait wait = new WebDriverWait(driver, 30);
Actions act = new Actions(driver);
act.moveToElement(Digital_Menu).perform();
act.click(wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id='CategoryMenu1']//a[@title='Samsung']")))).build().perform();
WebElement Micromax = wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//*[@id='filter_1Option_21']//a[@title='GSM Mobile Phones - Micromax']")));
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("arguments[0].scrollIntoView(true);arguments[0].click()", Micromax);
}
}
场景:
错误: org.openqa.selenium.TimeoutException:30秒后超时等待位于以下位置的元素:By.xpath:// * [@ id ='filter_1Option_21'] // a [@ title ='GSM手机 - Micromax' ]
答案 0 :(得分:1)
您的xpath上有错误的ID:
//*[@id='filter_1Option_21']//a[@title='GSM Mobile Phones - Micromax']
您应该使用 filter_1Option_20 ,但最好使用xpath:
//li/a[@title='GSM Mobile Phones - Micromax']
我认为您的过滤器ID不是常量,因此最好不要在xpath中使用ID。
答案 1 :(得分:0)
试试这个,它完全适合我。我可以点击“Micromax”
Actions action = new Actions(driver);
action.moveToElement(driver.findElement(By.linkText("Digital"))).build().perform();
WebDriverWait wait = new WebDriverWait(driver,30);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.linkText("Samsung")));
driver.findElement(By.linkText("Samsung")).click();
driver.findElement(By.xpath("//input[@class='input inputBox_filter_Brand']")).sendKeys("Micromax");
WebDriverWait wait1= new WebDriverWait(driver,30);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//a[@title='GSM Mobile Phones - Micromax']")));
driver.findElement(By.xpath("//a[@title='GSM Mobile Phones - Micromax']")).click();