因此,我相信我可以通过CSS选择器或Xpath甚至是TagName来获取元素,但是我无法获取与之关联的文本。
这是HTML的外观:
<label for="AnswerText">This is the question text? </label>
在我的代码中,我有这个:
static IWebDriver driver = new ChromeDriver(".");
static IWebElement securityQuestion = driver.FindElement(By.TagName("label"));
Console.WriteLine("question is ", securityQuestion.Text)
我想做的是从标签“这是问题文本?”中获取此文本。之所以这样做是因为文本会发生变化,并且根据答案的不同,输入会有所不同,因此我必须合并逻辑以获取该文本并将其设置为等于要匹配的变量。
我尝试使用.Text GetAttribute(“ value”),但由于标签没有任何值以及不同的选择器而无法使用。
static IWebDriver driver = new ChromeDriver(".");
static IWebElement securityQuestion = driver.FindElement(By.TagName("label"));
Console.WriteLine("question is ", securityQuestion.Text)
答案 0 :(得分:0)
我没有足够的代表发表评论,但是您所拥有的应该可以工作。让我想知道您是否获得了正确的元素。当您尝试打印文本时,异常/输出是什么?我假设页面上有不止一个TagName为“ label”的元素。我将尝试找到一个更独特的父元素,然后获取具有您要查找的文本的子元素。
IWebElment elem = driver.FindElement(By.Id("ParentID")).FindElement(By.TagName("label"));
或者尝试使用XPath ...也许之前尝试的路径不正确。如果您提供更多有关HTML的信息,请尝试提供帮助。
答案 1 :(得分:-1)
要提取文本这是问题文本吗?,您必须为ElementIsVisible()
和GetAttribute("innerHTML")
引入 WebDriverWait ,您可以使用其中一个以下Locator Strategies中的
CssSelector
:
new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementIsVisible(By.CssSelector("label[for='AnswerText']"))).GetAttribute("innerHTML");;
XPath
:
new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementIsVisible(By.XPath("//label[for='AnswerText']"))).GetAttribute("innerHTML");