如何使用 selenium webdriver 打印 <nobr> 标签中的值
How to print values present in <nobr> tag using selenium webdriver
如果有人能向我指出正确的方向,那将非常有帮助。
我正在尝试打印 nobr 标签中存在的值。
这是我的代码。
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>
这里我正在尝试计算 "nobr" 标签中的星星数量,以某种方式打印空值。
伙计们,请给我指明正确的方向。
我会这样做:
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应该是star,考虑一下:
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 - 工作版本
我在下面尝试了一些 link 来识别 nobr 标签内的输入标签:
xpath=//div[@id='div0_17']/span[@id='outer0_366']/nobr/input
如果有人能向我指出正确的方向,那将非常有帮助。 我正在尝试打印 nobr 标签中存在的值。
这是我的代码。
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>
这里我正在尝试计算 "nobr" 标签中的星星数量,以某种方式打印空值。
伙计们,请给我指明正确的方向。
我会这样做:
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应该是star,考虑一下:
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 - 工作版本
我在下面尝试了一些 link 来识别 nobr 标签内的输入标签:
xpath=//div[@id='div0_17']/span[@id='outer0_366']/nobr/input