繁体   English   中英

无法让Selenium找到元素

[英]Can't get Selenium to find element

我想在yelp.com上找到一个元素。 我尝试过使用xPathClassNames但似乎无法检索每个业务的星级。

这是星级HTML:

<div class="i-stars i-stars--regular-4-half rating-large" title="4.5 star rating">
    <img class="offscreen" height="303" src="https://s3-media1.fl.yelpcdn.com/assets/srv0/yelp_design_web/41341496d9db/assets/img/stars/stars.png" width="84" alt="4.5 star rating">
</div>

这是我的代码来检索评级:

var starRating = driverGC.FindElement(By.LinkText("title"));
MessageBox.Show(starRating.Text); 

我希望它返回4.5所以我可以将其保存到另一个文件。 我正在使用C#和Visual Studio。

如果你只有一个结果,我想你可以做到这一点。 或者,如果您需要查找特定评级,请根据需要进行自定义:

// The rating element
var starRating = driverGC.FindElement(By.ClassName("i-stars"));
// The title attribute on the rating element is something like '4.5 star rating'
// which I think is what you're trying to find.
MessageBox.Show(starRating.GetAttribute("title").Split(' ').First());   

或者,如果您想循环遍历所有元素:

// The rating element
IList<IWebElement> starRatings = driverGC.FindElements(By.ClassName("i-stars"));
// The title attribute on the rating element is something like '4.5 star rating'
// which I think is what you're trying to find.
foreach (IWebElement elem in starRatings)
{
    MessageBox.Show(elem.GetAttribute("title")Split(' ').First());  
} 

Split(' ').First() First Split(' ').First()应返回第一个单词,即4.5。 注意:您需要using System.Linq; 声明为了使用First() ,或者你最终使用ToList()

您可以找到并过滤此类业务(使用Java):

List<WebElement> starRatings = driver.findElements(By.xpath("//div[contains(@title, 'star rating')]"));
List<WebElement> businesses = driver.findElements(By.xpath("//div[contains(@title, 'star rating')]/preceding::a[1]/span"));
for(int i = 0; i < starRatings.size(); i++)
{
       String rating = starRatings.get(i).getAttribute("title");
       rating = rating.split(" ")[0];
       DecimalFormat df = new DecimalFormat("#.#");
       Double d = Double.valueOf(rating);
       rating = df.format(d);
       d = Double.valueOf(rating);
       if(d <= 3)
       {
            String Businessname = businesses.get(i).getText();
            //Write variable Businessname & rating into file 
       }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM