Java Webdriver无法在返回两页的页面上找到元素

时间:2017-02-02 05:57:42

标签: java selenium xpath selenium-webdriver

Webdriver似乎无法在最初找到的页面上选择webelement(按钮),但在遍历多个页面时返回到同一页面,selenium webdriver找不到相同的对象。

情况就像,我在主页并通过添加.isDisplayed()这样的方法进行验证 -

if (isElementPresent("(//input[@name='sbqq__editlines'])[1]") == true)
{
    System.out.println("YES, reached on Quote page");
    if (objApprovalBlk.findElement(By.xpath(".//table[@class='list']")).isDisplayed())
        {
        List<WebElement> rows = objApprovalBlk.findElement(By.xpath(".//table[@class='list']")).findElements(By.xpath(".//tr"));
        List<WebElement> rows = objApprovalBlk.findElement(By.xpath(".//table[@class='list']")).findElements(By.xpath(".//tr"));

...now if rows are present with text 'Requested' then a link has to be clicked on that row and workflow takes the user to multiple page of Apporval !


driver.findElement(By.xpath("//input[@value='Approve']")).click();

///Reaching back to QUOTE page now !            ---NOT WORKING FROM HERE !
    tmpElement = new WebDriverWait(driver, 100)
                .until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@name='sbqq__editlines'])[1]")));
    tmpElement = null;

}else{
        System.out.println("Didn't reached Quote Page !");
    }

因此,在返回主页时,同一个对象//input[@name='sbqq__editlines'])[1]无法识别。以下是我收到的例外情况:

  

org.openqa.selenium.TimeoutException:100秒后超时   等待元素可点击:By.xpath:   //输入[@名称= 'sbqq__editlines'])[1]

我无法理解这背后的问题,驱动程序引用过时的对象,或者当我点击Quote主页上的链接时,它不是直接来自驱动程序对象而是其他东西,因此我可能需要刷新驱动程序宾语。我刚从selenium来自HP UFT背景时开始 var objectLabel = new cc.Sprite("res/rect.png", cc.rect(0, 0, 100, 100)); setTimeout(function(){this.addChild(objectLabel, 5)}.bind(this), 600); ,所以想到刷新对象是我对该问题的第一次评估。

1 个答案:

答案 0 :(得分:0)

根据this回答:

尝试使用

  PageFactory.initElements(driver, this);

在基页上执行任何活动之前。