这是我的代码。
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.Test;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.AfterTest;
public class appannieuserrating {
public static WebDriver driver;
@Test
public void f() throws Exception{
driver.findElement(By.id("login-button")).click();
driver.findElement(By.id("username")).sendKeys("sample.test@gmail.com");
driver.findElement(By.id("password")).sendKeys("password");
driver.findElement(By.id("login_submit_button")).click();
Thread.sleep(5000);
driver.navigate().to("https://www.appannie.com/apps/ios/app/storage-hunters-uk-the-game/reviews/?date=2015-07-06~2015-07-06");
Thread.sleep(5000);
String s1 = driver.findElement(By.cssSelector(".ngCellText.cell-inner.ng-scope")).findElement(By.tagName("img")).getAttribute("src");
System.out.println(s1);
}
@BeforeTest
public void beforeTest() {
driver = new FirefoxDriver();
driver.get("https://www.appannie.com/");
}
@AfterTest
public void afterTest() {
}
}
<div class="ngCanvas" ng-style="canvasStyle()" style="height: 467px;">
<div class="ng-scope ngRow even" ng-row="" ng-class="row.alternatingRowClass()" ng-click="row.toggleSelected($event)" ng-repeat="row in renderedRows" ng-style="rowStyle(row)" style="top: 0px; height: 58px;">
<div class="ngCell col0 colt0" ng-class="{'sorted': col.sortDirection}" ng-repeat="col in renderedColumns" style="height: 58px;">
<div class="ngVerticalBar ngVerticalBarVisible" ng-class="{ ngVerticalBarVisible: !$last }" ng-style="{height: rowHeight}" style="height: 58px;"> </div>
<div ng-cell="">
<div class="ngCellText cell-inner ng-scope">
<span stars="row.getProperty(col.field)" aa-stars="">
<nobr>
<img alt="*" src="/media/pictures/star-whole.png">
<img alt="*" src="/media/pictures/star-whole.png">
<img alt="*" src="/media/pictures/star-whole.png">
<img alt="*" src="/media/pictures/star-whole.png">
<img alt="*" src="/media/pictures/star-whole.png">
</nobr>
</span>
</div>
</div>
</div>
这里我试图计算&#34; nobr&#34;中存在的星数。以某种方式标记其打印空值。
请我指出正确的方向。
答案 0 :(得分:0)
我会这样做:
List<WebElement> elements = driver.findElement(By.xpath("//span[@aa-stars]/nobr")).findElements(By.tagName("img"));
int counter = 0;
for(WebElement we: elements) {
if("*".equals(we.getAttribute("alt"))) {
counter++;
}
}
System.out.println(counter);
不幸的是,你的密码不正确,所以我无法自己尝试:D:D在本地尝试使用相同的HTML - 应该可以。
<强> UPD:强>
我忘了告诉 - 在你试图找到img元素时 - 你忽略了 nobr 。是。它也在DOM中。如果你想找到下一个img - 就像这样:
.findElement(By.xpath("//img"));
如果您使用by tagName
- 则假定您搜索直接子项。
UPD 2
如果你依赖src并相信这个img应该是一个明星,请考虑一下:
for(WebElement we: elements) {
String text = we.getAttribute("src");
if(text!=null) {
if(text.contains("star"){
counter++;
}
}
}
UPD 3
List<WebElement> elements = driver.findElement(By.xpath("//span[@aa-dtars]/nobr")).findElements(
By.tagName("img"));
int counter = 0;
String starPicLink = "/media/pictures/star-whole.png";
for (WebElement we : elements) {
String text = we.getAttribute("src");
if (starPicLink.equals(text)) {
counter++;
}
}
System.out.println(counter + " Star");
UPD 4
pastie.org/10292596#34 - 工作版
答案 1 :(得分:0)
我尝试了以下链接,以在nobr标签内标识输入标签:
xpath = // div [@ id ='div0_17'] / span [@ id ='outer0_366'] / nobr / input