我为“创建项目”页面创建了一个POM
public static class addProjInfo_container
{
public static WebElement ProjName_txt(WebDriver driver)
{
element=driver.findElement(By.xpath("//label[text()='Project Name']/following-sibling::input"));
return element;
}
// and so on for every text field for adding project...
我为waitForElement
创建了一个带有方法的TestUtility
类,如下所示
public final class TestUtility {
private static WebDriver driver;
public static void waitforElementXpath(final WebDriver driver,final int waitTime,final String xp)
{
WebDriverWait wait =new WebDriverWait(driver, waitTime);
wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath(xp)));
}
}
现在,在测试脚本中,我希望避免使用Thread.sleep()
来等待webelement准备好开始执行操作。
因此,我使用
TestUtility.waitforElementXpath(driver,10,CreateProject_Page.addProjInfo_container.projName_txt(driver));
但是,它将错误显示为
The method waitforElementXpath(WebDriver, int, String) in the type TestUtility is not applicable for the arguments (WebDriver, int, WebElement)
请告诉我如何处理这个问题。
发布于 2015-10-09 18:46:23
基本上,您希望反转By以获取其字符串,并且您正在使用xpath
因此,将其更改为返回字符串而不是WebElement
public static class addProjInfo_container {
public static String projName_txt(WebDriver driver) {
By by = By.xpath("//label[text()='Project Name']/following-sibling::input");
driver.findElement(by);
return getSelectorAsString(by);
}
public static String getSelectorAsString(By by) {
String str = by.toString();
return str.substring(str.indexOf(" ") , str.length());
}
// and so on for every text field for adding project...
}
希望这能有所帮助
发布于 2015-10-10 09:40:33
这确实是一种试图完成这项任务的复杂方式。您的ProjName_txt()
方法已经找到了该元素,因为这是它返回的内容,所以您不需要使用waitforElementXpath()
来等待它出现。我建议你在写太多代码之前先阅读一些关于OOP和类的文章。
发布于 2017-06-14 02:08:03
最好的方法是:
String name = driver.findElementByClassName("classnamesample").getText() ;
只需在最后一个xpath中添加.getText()
并将其作为String
接收。
https://stackoverflow.com/questions/33029579
复制相似问题