Selenium webdriver从span标记上的data-bind获取值

时间:2017-06-13 18:18:08

标签: c# html selenium

我需要从此标记中获取值

<span>
    <a class="jsk-sa-dialog link-lightbox-valores" data-bind="attr: { href: '#sa-valor-' + $root.types().id }" href="#sa-valor-2">
    Link to click that pop-ups a new window
    </a>
</span>

看完&#34; html&#34;调试器中的代码,我看到了我想要进入HTML的文本... 为了获得生成到弹出窗口中的文本,我编写了这段代码:

case "someBaseText":    
{
    details.Click(); // Simulate the click on <a> tag
    var tx = details.FindElement(By.XPath("//div[@class='overview-material']"));
    var dv = tx.FindElement(By.XPath("//div[@class='sa-valor']/h3"));
    var ttText = dv.Text; // Empty :(
}

我从调试器获得的HTML:

<div class="overview-material">
<div class="valores" data-bind="foreach: $root.types">
<div class="sa-valor" data-bind="attr: { id: 'sa-valor-' + id }" id="sa-valor-2">
<h3 class="titulo">Mensalidade</h3>
<div class="texto" data-bind="html: apresentacao.valor">
TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT

所以,我想在div类中找到文本&#34; texto&#34;

2 个答案:

答案 0 :(得分:0)

基于dv的XPath,您将获得<h3>元素:

<h3 class="titulo">Mensalidade</h3>

因此dv.Text应该返回"Mensalidade"

尝试使用<div>

将XPath更新为class='texto'
//div[@class='sa-valor']/div[@class='texto']

答案 1 :(得分:0)

尝试使用CssSelector:

var text = driver.FindElement(By.CssSelector("div.texto")).Text;