【问题标题】:Selenium hanging forever while finding the preceding-sibling elements of 1st elementSelenium 在找到第一个元素的前兄弟元素时永远挂起
【发布时间】:2016-12-30 05:45:54
【问题描述】:

我正在尝试从同一个 webelement 获取前面的元素 Of 和。但是由于 webelement 是第一个 webelement,没有前面的兄弟元素,该过程永远挂起。 当我试图从另一个 webelement 中找到 webelements(而不是使用驱动程序)时,隐式等待也不起作用。

@BeforeTest
public void init(){
    driver = new FirefoxDriver();
    driver.manage().timeouts().implicitlyWait(2000, TimeUnit.SECONDS);
    driver.get("https://account.box.com/login");
}


    @Test
public void testWebElem(){
    WebElement source = driver.findElement(By.xpath(".//*[@id='login-form']/div/h2"));
    System.out.println(getPositionOfWebElem(source));
}


private int getPositionOfWebElem(WebElement elem){
    String xpathExpressionFollowing = "./following-sibling::*";
    System.out.println("xPath Expression :: " + xpathExpressionFollowing);
    List<WebElement> elemsFollowing = elem.findElements(By.xpath(xpathExpressionFollowing));
    printWebelems(elemsFollowing);
    String xpathExpression = "./preceding-sibling::*";
    System.out.println("xPath Expression :: " + xpathExpression);
    List<WebElement> elemsts = elem.findElements(By.xpath(xpathExpression));
    printWebelems(elemsts);
    return 0;
}

【问题讨论】:

    标签: java selenium selenium-webdriver


    【解决方案1】:

    减少你的隐式等待,因为 2000 秒是非常 L-O-N-G 等待!否则 webdriver 将等待 2000 秒来查找前面不存在的元素!顺便说一句,如果你喜欢 4 位整数,请使用 TimeUnit.MILLISECONDS

    以下片段对我有用

    import java.util.List;
    import java.util.concurrent.TimeUnit;
    import org.junit.Before;
    import org.junit.Test;
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.firefox.FirefoxDriver;
    import org.testng.annotations.BeforeTest;
    
    public class Test22{
    
    WebDriver driver;
    
    @Before
    public void init(){
     driver = new FirefoxDriver();
     driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
     driver.get("https://account.box.com/login");
    }
    
    @Test
      public void testWebElem(){
    WebElement source = driver.findElement(By.xpath(".//*[@id='login-form']/div/h2"));
    System.out.println(getPositionOfWebElem(source));
    }
    
    
    private int getPositionOfWebElem(WebElement elem){
    String xpathExpressionFollowing = "./following-sibling::*";
    System.out.println("xPath Expression :: " + xpathExpressionFollowing);
    List<WebElement> elemsFollowing = elem.findElements(By.xpath(xpathExpressionFollowing));
    System.out.println(elemsFollowing.size());
    String xpathExpression = "./preceding-sibling::*";
    System.out.println("xPath Expression :: " + xpathExpression);
    List<WebElement> elemsts = elem.findElements(By.xpath(xpathExpression));
    System.out.println(elemsts.size());
    return 0;
    }
    
    }
    

    【讨论】:

    • 哎呀对不起! :p 太习惯于以毫秒为单位使用时间了!;p
    • @DhaneshKhurana:如果我能够回答您的问题,请接受答案!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-16
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 2013-10-22
    • 1970-01-01
    相关资源
    最近更新 更多