<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就能做到这一点呢?
发布于 2016-03-29 22:34:48
您可以使用CSS选择器:
driver.FindElements(By.CssSelector("#targetSummaryCount > span"))这将匹配元素下直接带有id="targetSummaryCount"的所有span元素。
发布于 2016-10-14 20:04:30
我已经用Java发布了解决方案。请将其转换为C#
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发布于 2016-03-29 22:37:23
要使用XPath获取"0“和"20”:
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选择器:
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;https://stackoverflow.com/questions/36287007
复制相似问题