是因为Angular使用了单页面应用(SPA)的架构,它的页面内容是通过JavaScript动态生成的,而Selenium默认只能获取静态页面的内容。为了解决这个问题,可以使用Selenium的WebDriverWait类来等待Angular加载完毕,然后再获取输入值。
具体步骤如下:
- 导入Selenium和WebDriverWait类的命名空间:using OpenQA.Selenium;
using OpenQA.Selenium.Support.UI;
- 创建WebDriver对象,打开目标网页:IWebDriver driver = new ChromeDriver();
driver.Navigate().GoToUrl("目标网页的URL");
- 使用WebDriverWait类等待Angular加载完毕:WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
wait.Until(driver => ((IJavaScriptExecutor)driver).ExecuteScript("return document.readyState").Equals("complete"));
- 获取输入值:IWebElement inputElement = driver.FindElement(By.XPath("输入框的XPath"));
string inputValue = inputElement.GetAttribute("value");
以上代码中,需要将"目标网页的URL"替换为实际的目标网页URL,"输入框的XPath"替换为实际的输入框XPath。
推荐的腾讯云相关产品:腾讯云浏览器自动化测试服务(https://cloud.tencent.com/product/tbats)
腾讯云浏览器自动化测试服务是一种基于云端浏览器的自动化测试服务,提供了多种浏览器环境和操作系统环境,支持C# Selenium等多种自动化测试框架,可以解决C# Selenium无法从Angular读取输入值的问题。