使用Selenium java,我有一个链接列表,我想只打印包含文本“Java”的链接。这是我的代码:
package Selenium3;
import java.util.ArrayList;
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
public class Jobs {
static WebDriver driver;
public Jobs(WebDriver driver) {
this.driver = driver;
}
public static void con(WebDriver driver) throws InterruptedException {
List<WebElement> element =
driver.findElements(By.cssSelector(".position_title.ng-binding"));
for (int i = 0; i < element.size(); i++) {
String elementText = element.get(i).getText();
System.out.println(elementText);
}
}
}
我该怎么做?
答案 0 :(得分:0)
在字符串上使用SelectPhoneContact
方法
public class SelectPhoneContact {
String phone;
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
boolean isMatching;
public boolean isMatching(){return isMatching;}
public void setIsMatchingContact(boolean isMatching){
this.isMatching = isMatching;
}
//*****************************************
//this is for the checkbox
//by default, make it unchecked
boolean isSelected = false;
public boolean getSelected() {
return isSelected;
}
public void setSelected(boolean selected){
isSelected = selected;
}
String type_row;
public String getType_row() {
return type_row;
}
public void setType_row(String type_row) {
this.type_row = type_row;
}
}
答案 1 :(得分:0)
以上解决方案有效,但我想添加几个替代方案。
如果所有链接都带有&#34; Java&#34;与您的选择相关,您可以使用:
List<WebElement> elements = driver.findElements(By.partialLinkText("Java"));
这里的奖励是这样的选择传达了你想要选择的更好的东西,并且如果页面结构改变则不会改变。但是,如果更多的链接包含单词&#34; Java&#34;而不是作业标题(例如,如果页面包含在其链接中包含单词Java的广告等),则可能是不正确的
另一种可能性是将CSS类和文本与一个选择器结合使用:
List<WebElement> elements = driver.findElements(
By. cssSelector(".position_title.ng-binding:contains(Java)"));
你也可以用xpath做到这一点:
List<WebElement> elements = driver.findElements(
By. xpath("//a[contains(@class, 'position_title ng-binding') and contains(text(), 'Java')]"));