C# 如何使用Selenium获取role=alert的文本

C# 如何使用Selenium获取role=alert的文本,c#,selenium,C#,Selenium,我想从HTML页面获取role=alert的文本,我可以找到元素,但无法获取文本 客户.仪表板.无效代码 要查找我使用的元素,请执行以下操作: driver.FindElement(By.XPath(//div[contains(@class,'alert')]) 但如果每次获取空字符串时都尝试获取“customer.dashboard.InvalidCode”。您需要等待元素可见才能获取文本: IWait wait = new WebDriverWait(driver, TimeSpan.F

我想从HTML页面获取role=alert的文本,我可以找到元素,但无法获取文本


客户.仪表板.无效代码

要查找我使用的元素,请执行以下操作:

driver.FindElement(By.XPath(//div[contains(@class,'alert')])


但如果每次获取空字符串时都尝试获取“customer.dashboard.InvalidCode”。

您需要等待元素可见才能获取文本:

IWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(3))

IWebElement alert = wait.Until(ExpectedConditions.ElementExists(By.CssSelector("div.alert.alert-danger")));
string alertText = wait.Until(ExpectedConditions.ElementIsVisible(alert)).Text;

尝试此xpath:
//div[contains(@class,'alert-alert-danger-no-margin')]
而不是
//div[contains(@class,'alert')]


您的XPath选择器非常广泛。您可能正在选择包含警报类名的其他元素。你确定这是唯一的元素吗?您可以发布用于获取文本的代码吗?谢谢您的回答,我使用driver.FindElement(By.XPath(//div[contains(@class,'alert-alert-danger-no-margin'))解决了这个问题;在driver.FindElement(By.XPath(“//div[contains(@class,'alert-danger-no-margin')])之后查找元素;要获取文本,现在它正在工作!
driver.FindElement(By.XPath("//div[contains(@class, 'alert alert-danger no-margin')]")).Text;