我正在构建一个刮网站的c#应用程序。我认为这个问题是因为页面在一次又一次提交表单后被重新加载而导致的。我必须从选择列表中选择一个选项,然后按回车键,等待页面重新加载新结果。但是重新加载后会导致此错误;
Exception thrown: 'OpenQA.Selenium.StaleElementReferenceException' in WebDriver.dll
An exception of type 'OpenQA.Selenium.StaleElementReferenceException' occurred in WebDriver.dll but was not handled in user code
stale element reference: element is not attached to the page document (Driver info: chromedriver=2.33.506120 (e3e53437346286c0bc2d2dc9aa4915ba81d9023f),platform=Windows NT 10.0.14393 x86_64)
我的代码是这样的;
SelectElement departmentSelect = new SelectElement(driver.FindElement(By.Id("select")));
IList<IWebElement> departmentOptions = departmentSelect.Options;
foreach (IWebElement option in departmentOptions)
{
new SelectElement(driver.FindElement(By.Id("select"))).SelectByText(option.Text);
driver.FindElementById("butSearchByType").Click();
}
我也尝试过类似的东西;
WebDriverWait wait = new WebDriverWait(driver, System.TimeSpan.FromSeconds(2));
new SelectElement(driver.FindElement(By.Id("select"))).SelectByText(option.Text);
driver.FindElementById("butSearchByType").Click();
var ready = wait.Until(ExpectedConditions.ElementExists(By.Id("select")));
时间不多了,我有个例外,时间不多了。
当你想在页面上做一些事情,但是页面没有完全加载时,你有一个问题。在我的项目任何行动之前,我等待页面完全加载,也为ajax。
这是一个示例代码:
Wait.Until(driver1 => ((IJavaScriptExecutor)Driver.WebDriver).ExecuteScript("return document.readyState").Equals("complete"));
在哪里等待是一个WebDrive等待。
对于ajax,情况类似:
ExecuteScript("return jQuery.active == 0")
我正在使用C#和Selenium Chromedriver来做一个测试项目,以抓取谷歌地图。 在到达第二个循环之前,它运行良好: 返回: OpenQA. Selenium.过时元素引用:元素未附加到页面文档 这是我所有的代码: 任何帮助将不胜感激!
我得到了这个错误,当我试图点击一个下拉ID: 我想用这个代码: 有没有什么方法可以防止无限循环,或者更好的方法在我得到这个异常后点击id?
这是HTML结构如下所示 错误跟踪为:
我在我的selenium java项目中不断收到一条错误消息。
所以我正在尝试制作一个在flickr上运行的程序,我已经准备好了所有的东西,直到cookies弹出,它打败了我。 我正在尝试切换到这个iframe,这样我就可以使用“全部接受”按钮。然而,iframe的ID是动态的,所以为了避免这个问题,我尝试以标题为目标。 但是我现在收到了这个错误消息。 我已经尝试添加了10秒的等待时间来给它加载时间,我知道错误的原因是元素不再连接到DOM,但我不知道要使用什么
我正在尝试读取联系人页面中的数据,但遇到此异常。