Selenium IEdriver NoSuchElementException 异常
Selenium IEdriver NoSuchElementException exceptionally
我在 IE selenium 驱动程序中遇到了这种行为 - 我正在使用 Selenium IDE
生成的测试用例代码 - 在 Firefox
中工作正常。
driver.Navigate().GoToUrl(baseURL + "/RZR/1.5.85/ZobrazitReklamaceROB.aspx");
driver.FindElement(By.Id("ctl00_ContentPlaceHolderMain_identifikaceROB_rbAIFO")).Click();
driver.FindElement(By.Id("ctl00_ContentPlaceHolderMain_identifikaceROB_tbAIFO")).Clear();
driver.FindElement(By.Id("ctl00_ContentPlaceHolderMain_identifikaceROB_tbAIFO")).SendKeys("pqrJrJxtt/qUvjhO8=");
driver.FindElement(By.Id("ctl00_ContentPlaceHolderMain_identifikaceROB_btnVyhledat")).Click();
driver.FindElement(By.Id("ctl00_ContentPlaceHolderMain_identifikaceROB_btnVyhledat")).Click();
//Actions action = new Actions(driver);
//action.SendKeys(OpenQA.Selenium.Keys.Tab);
//action.SendKeys(OpenQA.Selenium.Keys.Tab);
//action.SendKeys(OpenQA.Selenium.Keys.Tab);
//action.SendKeys(OpenQA.Selenium.Keys.Tab);
//action.SendKeys(OpenQA.Selenium.Keys.Tab);
//action.SendKeys(OpenQA.Selenium.Keys.Tab);
//action.SendKeys(OpenQA.Selenium.Keys.Tab);
//action.SendKeys(OpenQA.Selenium.Keys.Tab);
//action.SendKeys(OpenQA.Selenium.Keys.Tab);
//action.SendKeys(OpenQA.Selenium.Keys.Enter);
driver.FindElement(By.Id("ctl00_ContentPlaceHolderMain_gvPrehled_ctl04_selectButton10168579135")).Click();
然而 IEDriver
- 如果我 运行 此代码在 VS2013
- 正在使用断点进行调试并逐步完成 - 它确实有效
- 如果我让测试在没有步进和断点的情况下进行,那么
NoSuchElementFindException
将发生在
driver.FindElement(By.Id("ctl00_ContentPlaceHolderMain_identifikaceROB_tbAIFO")).清除();
万一
- 这通常会发生 - 而且每次都会通过测试 - 但有时不会
NoSuchElementFindException
同事们建议我使用 Tab 键导航到组件(在本例中为 TB)- 到目前为止也不成功,但尝试了这种方式。
使用IE最新更新,ZOOM 100%,根据selenium网页修改注册表,所有区域设置相同的保护模式
有什么想法或相同的经历吗?
更新:
初始化:
[SetUp]
public void SetupTest()
{
var options = new InternetExplorerOptions
{
IgnoreZoomLevel = true
};
driver = new InternetExplorerDriver(".", options);
baseURL = "http://vm-kzr-dev/";
verificationErrors = new StringBuilder();
}
IE 似乎更慢,如果使用 Firefox 测试通过,则 IE 渲染页面速度较慢,在这种情况下您可以使用
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.Id("ctl00_ContentPlaceHolderMain_gvPrehled_ctl04_selectButton10168579135")));
这是一个问题。您需要禁用 IE 本机事件。
InternetExplorerOptions options = new InternetExplorerOptions();
options.EnableNativeEvents = false;
请参阅 this 以了解本机事件与 IEDriver 的关系。
我还建议您删除多余的 ignoreZoomLevel
并将其替换为 EnableNativeEvents
var options = new InternetExplorerOptions
{
EnableNativeEvents = false
};
我在 IE selenium 驱动程序中遇到了这种行为 - 我正在使用 Selenium IDE
生成的测试用例代码 - 在 Firefox
中工作正常。
driver.Navigate().GoToUrl(baseURL + "/RZR/1.5.85/ZobrazitReklamaceROB.aspx");
driver.FindElement(By.Id("ctl00_ContentPlaceHolderMain_identifikaceROB_rbAIFO")).Click();
driver.FindElement(By.Id("ctl00_ContentPlaceHolderMain_identifikaceROB_tbAIFO")).Clear();
driver.FindElement(By.Id("ctl00_ContentPlaceHolderMain_identifikaceROB_tbAIFO")).SendKeys("pqrJrJxtt/qUvjhO8=");
driver.FindElement(By.Id("ctl00_ContentPlaceHolderMain_identifikaceROB_btnVyhledat")).Click();
driver.FindElement(By.Id("ctl00_ContentPlaceHolderMain_identifikaceROB_btnVyhledat")).Click();
//Actions action = new Actions(driver);
//action.SendKeys(OpenQA.Selenium.Keys.Tab);
//action.SendKeys(OpenQA.Selenium.Keys.Tab);
//action.SendKeys(OpenQA.Selenium.Keys.Tab);
//action.SendKeys(OpenQA.Selenium.Keys.Tab);
//action.SendKeys(OpenQA.Selenium.Keys.Tab);
//action.SendKeys(OpenQA.Selenium.Keys.Tab);
//action.SendKeys(OpenQA.Selenium.Keys.Tab);
//action.SendKeys(OpenQA.Selenium.Keys.Tab);
//action.SendKeys(OpenQA.Selenium.Keys.Tab);
//action.SendKeys(OpenQA.Selenium.Keys.Enter);
driver.FindElement(By.Id("ctl00_ContentPlaceHolderMain_gvPrehled_ctl04_selectButton10168579135")).Click();
然而 IEDriver
- 如果我 运行 此代码在 VS2013
- 正在使用断点进行调试并逐步完成 - 它确实有效
- 如果我让测试在没有步进和断点的情况下进行,那么
NoSuchElementFindException
将发生在
driver.FindElement(By.Id("ctl00_ContentPlaceHolderMain_identifikaceROB_tbAIFO")).清除();
万一
- 这通常会发生 - 而且每次都会通过测试 - 但有时不会
NoSuchElementFindException
同事们建议我使用 Tab 键导航到组件(在本例中为 TB)- 到目前为止也不成功,但尝试了这种方式。
使用IE最新更新,ZOOM 100%,根据selenium网页修改注册表,所有区域设置相同的保护模式
有什么想法或相同的经历吗?
更新:
初始化:
[SetUp]
public void SetupTest()
{
var options = new InternetExplorerOptions
{
IgnoreZoomLevel = true
};
driver = new InternetExplorerDriver(".", options);
baseURL = "http://vm-kzr-dev/";
verificationErrors = new StringBuilder();
}
IE 似乎更慢,如果使用 Firefox 测试通过,则 IE 渲染页面速度较慢,在这种情况下您可以使用
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.Id("ctl00_ContentPlaceHolderMain_gvPrehled_ctl04_selectButton10168579135")));
这是一个问题。您需要禁用 IE 本机事件。
InternetExplorerOptions options = new InternetExplorerOptions();
options.EnableNativeEvents = false;
请参阅 this 以了解本机事件与 IEDriver 的关系。
我还建议您删除多余的 ignoreZoomLevel
并将其替换为 EnableNativeEvents
var options = new InternetExplorerOptions
{
EnableNativeEvents = false
};