如何通过Selenium和C#从元素获取文本

时间:2019-01-03 12:25:49

标签: c# selenium xpath css-selectors webdriverwait

如何从此代码中获取2.22号码?

<div class="crash-row crash-0d54ae895d62d03cfb4bdcb502109630">
    <div class="col bold h-col-1 c-green">2.22</div>
    <div class="col h-col-2">-</div>
    <div class="col h-col-3">-</div>
    <div class="col h-col-4">-</div>
    <div class="col h-col-5">
        <a href="javascript:;" class="show-code">0d54ae895d62d03cfb4bdcb502109630</a>
    </div>
    <div class="col h-col-6">
        <a href="javascript:;" class="show-code">8d76a8fa2b7613de95a7e13852055c77d013f441952a231c47ca0872bcdd64df</a>
    </div>
        <div class="clear">
    </div>
</div>

我已经尝试过此代码,但是没有用! 注意:我给出的XPATH是For <div class="col bold h-col-1 c-green">2.22</div>标记!

Console.Write(driver.FindElement(By.XPath("/html/body/div[2]/div[5]/div[2]/div[5]/div[3]/div[2]/div[2]/div[2]")).Text);

2 个答案:

答案 0 :(得分:1)

您可以首先尝试使用相对xpath来查找元素 //div[contains(@class, 'h-col-1')]

然后尝试使用

获取值
  1. 文本(element.Text)
  2. 获取属性(element.GetAttribute(“ value”))

答案 1 :(得分:0)

要提取文本 2.22 ,因为该元素是动态元素,则可以将 WebDriverwait element一起使用,并且可以使用以下任一解决方案:

  • CssSelector

    new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.ElementIsVisible(By.CssSelector("div.crash-row > div.c-green"))).GetAttribute("innerHTML");
    
  • XPath

    new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.ElementIsVisible(By.XPath("//div[contains(@class, 'crash-row')]/div[contains(@class, 'c-green')]"))).GetAttribute("innerHTML");