如何修复iframe无法使用Microsoft Edge?

时间:2016-07-05 11:29:14

标签: javascript selenium iframe webdriver microsoft-edge

更改iframe可以使用Firefox webdriver和Chrome网络驱动程序,但不能使用Microsoft Edge驱动程序。所有其他测试在Edge中运行良好,但不会改变iframe。我更新了Edge驱动程序和Windows 10,因为它是一个已知问题,但这仍然没有解决我的问题。还有其他方法可以解决这个问题吗?

public function ManupulateData($query,$val=array()){
        $stmt = $this->db->prepare($query);
        for($i=0;$i<count($val);$i++){
            $stmt->bindParam($i+1, $val[$i],PDO::PARAM_STR);
        }
        $stmt->execute();
        if($this->queryDriver=="mssql"){
            //$stmt->closeCursor();
            return $this->db->query('SELECT SCOPE_IDENTITY() as id');
            //return $this->db->lastInsertId(PDO::FETCH_ASSOC);
        }
        else{
            return $this->db->lastInsertId(PDO::FETCH_ASSOC);
        }
    }

出来的消息将是:找不到这样的元素

1 个答案:

答案 0 :(得分:2)

您需要实施WebDriverWait以等待可用的框架,然后按以下方式切换: -

WebDriverWait wait = new WebDriverWait(driver,20);

driver.switchTo().defaultContent();
wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("settingiframe")); 

//after successfully switching to frame you need to wait until element to be clickable
WebElement el = wait.until(ExpectedConditions.elementToBeClickable(By.id("LibraryConfigurations")));
el.click();

注意: - 对于给定wait 最多20秒,上述代码将frame。如果frame在给定时间内可用,则会切换到给定的frame。否则,它将抛出TimeoutException

希望它会帮助你...... :)