获取包含特定文本的特定链接

时间:2018-02-15 17:36:06

标签: java selenium

使用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);
    }
}

}

我该怎么做?

2 个答案:

答案 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')]"));
相关问题