一尘不染

如何在文本框中找到并键入内容

selenium

public class testFluent {

WebDriver driver;   
    @Before
        public void setUp(){        
    driver = new FirefoxDriver();
    driver.manage().window().maximize();
    driver.manage().deleteAllCookies();}

         @Test
        public void myFirstFluent(){
        WebElement element;
        driver.get("http://www.yahoo.com");         
        element = myDynamicElement(By.id("//*[@id='p_13838465-p']"));
        System.out.println("Element found");
        }

        public WebElement myDynamicElement(final By locator){

        Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
                    .withTimeout(10, TimeUnit.SECONDS)
                    .pollingEvery(100, TimeUnit.MILLISECONDS)
                    .ignoring(NoSuchElementException.class);

            WebElement element = wait.until(new Function<WebElement, WebDriver>(){

                public WebElement apply(WebDriver drv){
                    return drv.findElement(By.id(locator));
                }
            });

                return element;
        }

    }

我无法找到并以错误结束。

java.lang.Error:未解决的编译问题:Wait类型的until(Function)方法不适用于自变量(new
Function(){})函数无法解析为类型

类型为By的方法id(String)不适用于com.junit.qa.testFluent.myDynamicElement(testFluent.java:49)上的参数(By)


阅读 261

收藏
2020-06-26

共1个答案

一尘不染

等待,你可以使用这样的东西

    private boolean wAit(String match)
    {
    try
        {
        (new WebDriverWait(driver, 30))
            .until(ExpectedConditions.presenceOfElementLocated (By.xpath(match)));
        return true;
        }
    catch (NoSuchElementException e) {
        return false;
    }
    }

您可以创建上述方法,并在需要等待元素的任何地方使用它。例如

如果要在文本框中写一些东西并想等待文本框加载

wAit(" xpath of the textbox here")
driver.findelements... sendkeys()..

如果需要,您可以更改定位器类型并增加/减少时间限制

2020-06-26