更改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);
}
}
出来的消息将是:找不到这样的元素
答案 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
。
希望它会帮助你...... :)