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:
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"?
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(); } } }
Oui, tout à fait correct.
Voici une capture d'écran indiquant où trouver font-size
via Firebug.
É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"));
}
}
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();
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
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:-