如何使用Selenium来获取标签的文本

时间:2019-06-13 20:06:10

标签: c# selenium xpath css-selectors webdriverwait

因此,我相信我可以通过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)

2 个答案:

答案 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");