OpenQA.Selenium.NoSuchElementException未处理C#另一个网站
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了OpenQA.Selenium.NoSuchElementException未处理C#另一个网站,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2962字,纯文字阅读大概需要5分钟。
内容图文
![OpenQA.Selenium.NoSuchElementException未处理C#另一个网站](/upload/InfoBanner/zyjiaocheng/662/88943da1c7f34b7993f5eb718dae1474.jpg)
我是硒的新手,目前正在研究硒的工作原理.开始将其用于ASP.NET应用程序,我正在使用C#Selenium驱动程序,IE驱动程序服务器(32位,因为它比64位快)
我导航到一个应用程序,然后单击一个链接,该链接会将我带到另一个网站,我必须在其中找到一个文本框并清除它,然后输入一些文本(SendKeys),然后单击一个按钮.
当它从主网站转到另一个网站时,找不到元素(我尝试使用by.ID和by.Name).我确保该元素在网页上可用.作为推荐,我使用了ImplicitlyWait,但没有运气,尝试了thread.sleep()没有运气.测试是否需要在最初启动的网站上进行?..以下是我的代码段..请帮助我.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OpenQA.Selenium;
using OpenQA.Selenium.IE;
using OpenQA.Selenium.Support.UI;
using System.Threading;
namespace mySelenium
{
class Program
{
private static void Main(string[] args)
{
IWebDriver driver = new InternetExplorerDriver(@"C:\Users\msbyuva\Downloads\IEDriverServer_Win32_2.45.0\");
driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));
driver.Navigate().GoToUrl("http://MyorgName.org/Apps/Sites/2015/login.aspx");
IWebElement userNameTxtBox = driver.FindElement(By.Id("ContentPlaceHolder1_Login1_UserName"));
userNameTxtBox.SendKeys("MSBYUVA");
IWebElement passwordTxtBox = driver.FindElement(By.Id("ContentPlaceHolder1_Login1_Password"));
passwordTxtBox.SendKeys("1234");
var myButton = driver.FindElement(By.Id("ContentPlaceHolder1_Login1_LoginButton"));
myButton.Click();
var EMailLink = driver.FindElement(By.LinkText("Email Testing Link"));
EMailLink .Click();
//Thread.Sleep(10000);
// -- HERE IT IS THROWING ERROR (ANOTHER WEBSITE AFTER CLICKING HYPERLINK)
var toEmailAddress = driver.FindElement(By.Name("ctl00$ContentPlaceHolder1$txtTo"));
toEmailAddress.Clear();
toEmailAddress.SendKeys("msbyuva@gmail.com");
var chkEmailAttachment = driver.FindElement(By.Name("ctl00$ContentPlaceHolder1$ChkAttachMent"));
chkEmailAttachment.Click();
var sendEmailButton = driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_BtnSend"));
sendEmailButton.Click();
}
}
}
解决方法:
您需要切换到新打开的窗口并为其设置焦点,以便向其发送任何命令
string currentHandle = driver.CurrentWindowHandle;
driver.SwitchTo().Window(driver.WindowHandles.ToList().Last());
在新打开的窗口完成后(根据需要)
driver.Close();
driver.SwitchTo().Window(currentHandle );
更完美地使用PopupWindowFinder类
string currentHandle = driver.CurrentWindowHandle;
PopupWindowFinder popUpWindow = new PopupWindowFinder(driver);
string popupWindowHandle = popUpWindow.Click(EMailLink );
driver.SwitchTo().Window(popupWindowHandle);
//then do the email stuff
var toEmailAddress = driver.FindElement(By.Name("ctl00$ContentPlaceHolder1$txtTo"));
toEmailAddress.Clear();
toEmailAddress.SendKeys("msbyuva@gmail.com");
var chkEmailAttachment = driver.FindElement(By.Name("ctl00$ContentPlaceHolder1$ChkAttachMent"));
chkEmailAttachment.Click();
var sendEmailButton = driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_BtnSend"));
sendEmailButton.Click();
}
}
}
//closing pop up window
driver.Close();
driver.SwitchToWindow(currentHandle);
内容总结
以上是互联网集市为您收集整理的OpenQA.Selenium.NoSuchElementException未处理C#另一个网站全部内容,希望文章能够帮你解决OpenQA.Selenium.NoSuchElementException未处理C#另一个网站所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。