web-dev-qa-db-fra.com

Selenium WebDriver - Méthode getCssValue ()

Je fais un exercice pour utiliser la méthode cssGetValue afin de récupérer la valeur de la propriété CSS d'un élément Web particulier. 

J'ai 2 questions:

  1. pourquoi la méthode cssGetValue a renvoyé la valeur 13px, quel élément Web la méthode est-elle réellement référencée? 1a. Je souhaite obtenir la propriété CSS de la section intitulée "Par ID". Comment dois-je modifier mon code pour obtenir la valeur de la propriété CSS pour la section id = "by-id"?

  2. J'ai utilisé la méthode driver.close (), mais elle ne fermera pas le navigateur une fois le script terminé. Expliquez-moi pourquoi la méthode driver.close () n'a pas fonctionné dans ce cas. 

    Voici mon fragment de code: 

    package wd_findElementBy;
    
    import Java.util.List;
    
    import org.junit.Test;
    
    import org.junit.Before;
    
    import org.junit.After;
    
    
    import org.openqa.Selenium.By;
    
    import org.openqa.Selenium.WebDriver;
    
    import org.openqa.Selenium.WebElement;
    
    import org.openqa.Selenium.firefox.FirefoxDriver;
    
    
    public class SearchWebElements 
    {
    
    WebDriver driver = new FirefoxDriver();
    private String baseUrl= "http://docs.seleniumhq.org/docs/03_webdriver.jsp#introducing-the-Selenium-webdriver-api-by-example";
    
    @Test
    public void findElements(){
    driver.get(baseUrl);
    
    try{
        List<WebElement> elements = driver.findElements(By.id("by-id"));
        System.out.println("number of elements: " + elements.size());
    
        for(WebElement ele : elements){
            System.out.println(ele.getTagName());
    
            System.out.println("get the text for web element with id='by-id' ");
            System.out.println("------------------------------------------------------------");
            System.out.println(ele.getText());
            System.out.println("------------------------------------------------------------");
            System.out.println(ele.getAttribute("id"));
            System.out.println(ele.getCssValue("font-size"));
    
        }
    }
    
    finally{
        //driver.close();
        driver.quit();
    }
    
    
    }
    
    }
    
5
user2061466

Oui, tout à fait correct.

Voici une capture d'écran indiquant où trouver font-size via Firebug.

enter image description here

Étant donné que les identifiants sont supposés être uniques (du moins pour cette page), vous n'avez pas besoin de findElements pour trouver une liste d'éléments avec id by-id et d'une boucle, mais utilisez plutôt findElement pour obtenir l'élément directement.

try{
        WebElement byId = driver.findElement(By.id("by-id"));

        System.out.println(byId.getTagName());

        System.out.println("get the text for web element with id='by-id' ");
        System.out.println("------------------------------------------------------------");
        System.out.println(byId.getText());
        System.out.println("------------------------------------------------------------");
        System.out.println(byId.getAttribute("id"));
        System.out.println(byId.getCssValue("font-size"));
    }
}
12
Yi Zeng

Pour obtenir une valeur CSS:

driver.findElement(By.id("by-id")).getCssValue("font-size");//similarly you can use other CSS property such as background-color, font-family etc.

Pour quitter/fermer le navigateur une fois l'exécution du script terminée:

driver.quit();
10
Ripon Al Wasim

classe publique GetCssValues ​​{

public WebDriver driver;
private By bySearchButton = By.name("btnK");

@BeforeClass
public void setUp() {
    driver = new FirefoxDriver();
    driver.get("http://www.google.com");
}

@Test(priority=1)
public void getCssValue_ButtonColor()  {
    WebElement googleSearchBtn = driver.findElement(bySearchButton); 
    System.out.println("Color of a button before mouse hover: " + googleSearchBtn.getCssValue("color"));
    Actions action = new Actions(driver);
    action.moveToElement(googleSearchBtn).perform();
    System.out.println("Color of a button after mouse hover : " + googleSearchBtn.getCssValue("color"));
}

@Test(priority=2)
public void getCssValue_ButtonFontSize() {
    WebElement googleSearchBtn = driver.findElement(bySearchButton);
    System.out.println("Font Size of a button " + googleSearchBtn.getCssValue("font-size"));
}

@Test(priority=3)
public void getCssValue_ButtonFontWeight(){
    WebElement googleSearchBtn = driver.findElement(bySearchButton);
    System.out.println("Font Weight of a button "   +getFontWeight(googleSearchBtn) );
}

public String getFontWeight(WebElement element) {
    //Output will return as 400 for font-weight : normal, and 700 for font-weight : bold
    return element.getCssValue("font-weight");
}

@AfterClass
public void tearDown() {
    driver.quit();
}

}

sortie:

Couleur d'un bouton avant le survol de la souris: rgba (68, 68, 68, 1) Couleur d'un bouton après le survol de la souris: rgba (34, 34, 34, 1) Taille de police d'un button 11px Police Poids d'un bouton 700

2
Khan Imran

La valeur est correcte. Vous avez besoin d'une section calculée d'accès dans dev-tools

Ajoutez le nom de la propriété dans la getCssValue pour obtenir les informations à son sujet.

Quelques exemples sont :-

        System.out.println("font-size = "+ele.getCssValue("font-size"));
        System.out.println("background = "+ele.getCssValue("background"));
        System.out.println("line-height = "+ele.getCssValue("line-height"));
        System.out.println("color = "+ele.getCssValue("color"));
        System.out.println("font-family = "+ele.getCssValue("font-family"));

Référer:-

 enter image description here

0
Shubham Jain