我试图通过selenium获取推文数量(推文数)
以下是页面来源:
<li class="DashboardProfileCard-stat Arrange-sizeFit">
<a class="DashboardProfileCard-statLink u-textUserColor u-linkClean u-block"
title="1 Tweet"
href="/saisiva14"
data-element-term="tweet_stats">
<span class="DashboardProfileCard-statLabel u-block">Tweets</span>
<span class="DashboardProfileCard-statValue" data-is-compact="false">1</span>
</a>
</li>
<li class="DashboardProfileCard-stat Arrange-sizeFit">
<a class="DashboardProfileCard-statLink u-textUserColor u-linkClean u-block"
title="38 Following"
href="/following"
data-element-term="follower_stats">
<span class="DashboardProfileCard-statLabel u-block">Following</span>
<span class="DashboardProfileCard-statValue" data-is-compact="false">38</span>
</a>
</li>
<li class="DashboardProfileCard-stat Arrange-sizeFit">
<a class="DashboardProfileCard-statLink u-textUserColor u-linkClean u-block"
title="4 Followers"
href="/followers"
data-element-term="following_stats">
<span class="DashboardProfileCard-statLabel u-block">Followers</span>
<span class="DashboardProfileCard-statValue" data-is-compact="false">4</span>
</a>
</li>
我无法找到网页元素以获取推文,关注者和以下。原因是span类名称对所有这些元素都很常见。请帮助我。
答案 0 :(得分:1)
要获得推文/关注/关注者的数量,您可以尝试以下语句:
System.out.println(driver.findElement(By.xpath("//a[contains(@title, 'Tweet')]/span[2]")).getText());
System.out.println(driver.findElement(By.xpath("//a[contains(@title, 'Following')]/span[2]")).getText());
System.out.println(driver.findElement(By.xpath("//a[contains(@title, 'Followers')]/span[2]")).getText());
要点击推文/关注/关注者链接,您可以尝试以下声明:
driver.findElement(By.xpath("//a[contains(@title, 'Tweet')]")).click();
driver.findElement(By.xpath("//a[contains(@title, 'Following')]")).click();
driver.findElement(By.xpath("//a[contains(@title, 'Followers')]")).click();
或
driver.findElement(By.xpath("//a[./span[text()='Tweets']]")).click();
driver.findElement(By.xpath("//a[./span[text()='Following']]")).click();
driver.findElement(By.xpath("//a[./span[text()='Followers']]")).click();
以上陈述对我来说很好。
答案 1 :(得分:0)
试试这个
IList<IWebElement> elements = driver.FindElements(By.ClassName("DashboardProfileCard-stat"));
foreach (IWebElement element in elements)
{
IWebElement ele = element.FindElement(By.ClassName("DashboardProfileCard-statLabel"));
if (ele.Text == "Tweets")
{
return element.FindElement(By.ClassName("DashboardProfileCard-statValue")).Text;
}
}
这是使用C#,如果使用任何其他语言,您可以相应地进行修改。
答案 2 :(得分:0)
选择器.DashboardProfileCard-stat span:nth-child(2)
应该为您提供指向计数的Web元素的集合。例如在Java中:
ArrayList<WebElement> elements = driver.findElements(By.cssSelector(".DashboardProfileCard-stat span:nth-child(2)"))
然后,您可以使用elements.get(0).getText()
来发送推文。 elements.get(1).getText()
跟随。追随者elements.get(2).getText()
。所以:
ArrayList<WebElement> elements = driver.findElements(By.cssSelector(".DashboardProfileCard-stat span:nth-child(2)"));
int tweets = elements.get(0).getText();
int following = elements.get(1).getText();
int followers = elements.get(2).getText();
当然,请进行适当的安全检查等。在访问之前检查阵列的长度。
答案 3 :(得分:0)
此代码在Java :)
迭代集合以查找span元素(<a>
标记的子元素)并根据类名变体 statLabel / statValue <捕获文本/强>”。
List<WebElement> webElement = driver.findElements(By.xpath("//li[@class='DashboardProfileCard-stat Arrange-sizeFit']//a"));
for (WebElement element : webElement) {
System.out.println(element.findElement(By.xpath("//span[contains(@class,'statLabel')]")).getText());
System.out.println(element.findElement(By.xpath("//span[contains(@class,'statValue')]")).getText());
}