首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >selenium c# -如何在div下获取span标记文本

selenium c# -如何在div下获取span标记文本
EN

Stack Overflow用户
提问于 2016-03-29 22:18:14
回答 5查看 3.3K关注 0票数 0
代码语言:javascript
复制
<div id="targetSummaryCount" class="large-text" data-reactid=".0.0.0.3.0.0.1.0.0.0.0.$target_key_30.1.1.0">
<span data-reactid=".0.0.0.3.0.0.1.0.0.0.0.$target_key_30.1.1.0.0">0</span>
<span data-reactid=".0.0.0.3.0.0.1.0.0.0.0.$target_key_30.1.1.0.1">/</span>
<span data-reactid=".0.0.0.3.0.0.1.0.0.0.0.$target_key_30.1.1.0.2">20</span>
</div>

我想使用div id 'targetSummaryCount‘从上面的html中获取'0’和'20‘值。有没有办法在Selenium C#中不使用xpath就能做到这一点呢?

EN

回答 5

Stack Overflow用户

发布于 2016-03-29 22:34:48

您可以使用CSS选择器:

代码语言:javascript
复制
driver.FindElements(By.CssSelector("#targetSummaryCount > span"))

这将匹配元素下直接带有id="targetSummaryCount"的所有span元素。

票数 1
EN

Stack Overflow用户

发布于 2016-10-14 20:04:30

我已经用Java发布了解决方案。请将其转换为C#

代码语言:javascript
复制
    WebElement divSummary = driver.findElementById("targetSummaryCount");
    List<WebElement> targetKeys = divSummary.findElements(By.tagName("span"));
    // For  getting first and last element
    targetKeys.get(0);
    targetKeys.get(targetKeys.size()-1);

    // For maintaining queue of elements with text 0 or 20
    HashMap <Integer, List<WebElement>> elementmap = new HashMap <Integer, List<WebElement>>();
    List<WebElement> webElements1 = new ArrayList<WebElement>();
    List<WebElement> webElements2 = new ArrayList<WebElement>();
    for (WebElement elem : targetKeys){
        if(elem.getText().trim().equals("0")){
            webElements1.add(elem);
        }
        else if (elem.getText().trim().equals("20")){
            webElements2.add(elem);
        }
    }
    elementmap.put(0,webElements1);
    elementmap.put(20,webElements1);
    // elementmap.get(0) contains all span tag under target Summary Count div tag
    // elementmap.get(20) contains all span tag under target Summary Count div tag
票数 1
EN

Stack Overflow用户

发布于 2016-03-29 22:37:23

要使用XPath获取"0“和"20”:

代码语言:javascript
复制
string value_00 = driver.FindElementByXPath("//div[@id='targetSummaryCount']/span[1]").Text;
string value_20 = driver.FindElementByXPath("//div[@id='targetSummaryCount']/span[3]").Text;

// or
var elements = driver.FindElementsByXPath("//div[@id='targetSummaryCount']/span");
string value_00 = elements[0].Text;
string value_01 = elements[2].Text;

并使用Css选择器:

代码语言:javascript
复制
string value_00 = driver.FindElementByCssSelector("#targetSummaryCount > span:nth-child(1)").Text;
string value_20 = driver.FindElementByCssSelector("#targetSummaryCount > span:nth-child(3)").Text;

// or
var elements = driver.FindElementsByCssSelector("#targetSummaryCount > span:nth-child(odd)");
string value_00 = elements[0].Text;
string value_01 = elements[1].Text;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36287007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档