2016-04-26 6 views
1

Zeile enthalten:I CSS-Selektor müssen Elemente auswählen, die einen bestimmten Text

<div class="btn btn-second-in-pair-not-desired btn-tall">Clear search</div> 
<div class="btn btn-second-in-pair-not-desired btn-tall">Raw Search</div> 
<div class="btn btn-second-in-pair-not-desired btn-tall">Basic Search</div> 
<div class="btn btn-primary-stand-alone btn-tall search-btn">Search</div> 

Hier ist, was ich bisher versucht haben - ".btn: contains ('Clear Suche')", aber Selen ist nicht in der Lage, es zu fangen

+0

Es gibt keine CSS-Selektor auf Rohtext basiert. –

+1

Können Sie versuchen, css = div.btn: contains ('Suche löschen'). ref: https://saucelabs.com/resources/selenium/css-selectors –

+0

bitte geben Sie die Elternquelle an, in der diese div Lüge dann nur Sie erhalten genauen css Selektor –

Antwort

1

CSS-Selektor unterstützt :contains() nicht mehr. Sie müssen XPath "//div[text()='Clear search']" verwenden.

+0

Dank @Buaban. um die dinge einfach zu halten, habe ich mich entschieden, xpath zu verwenden. – user3121891

+0

@ user3121891 Ich bin froh, dass Sie sich entschieden haben, mit Xpath gehen, die für Sie arbeitet, aber bitte ändern Sie diese Frage als Frage und Antwort nicht übereinstimmen, wie Sie ausdrücklich gesagt haben, benötigen Sie Css Selektor –

0

Ich glaube nicht, CSS unterstützt Suche nach Inhalt des HTML-Elements.

Warum nicht versuchen:

<div class="btn btn-second-in-pair-not-desired btn-tall clear">Clear search</div> 
<div class="btn btn-second-in-pair-not-desired btn-tall raw">Raw Search</div> 
<div class="btn btn-second-in-pair-not-desired btn-tall basic">Basic Search</div> 
<div class="btn btn-primary-stand-alone btn-tall search-btn">Search</div> 

Und dann über die Auswahl:

.btn{ 
    color:red; 
} 

.clear, .raw, .basic, .search-btn{ 
    color:blue; 
} 

Oder Sie könnten versuchen immer ids mit

<div id="search">Search</div> 

wählen:

#search{ 
... 
} 
0

Wenn Sie Selenium verwenden, akzeptiert es auch XPATH-Zeichenfolgen, die in manchen Fällen manchmal flexibler als CSS-Selektoren sein können. Weil ich super faul bin auch, finde ich es ganz praktisch, dass Sie Recht, einen Tag in den Elementen Ansicht DevTools klicken und „Kopieren> Kopieren XPath“

webDriver.findElement(
    By.xpath(
    "//div[text()='Clear search']" 
) 
).click(); 
+0

Dies funktioniert und ich denke, auf der sichere seite ich benutze besser xpath. Vielen Dank @Kraig – user3121891

0

Sie die Klasse nicht ändern können, je nach Inhalt ?

<?php 
$content = $your_content_from_database; 
$arr_content = explode(" ", $content); 
$first = $arr_content[0]; 
echo '<div class="btn btn-second-in-pair-not-desired btn-tall clear" data-content="'.$first.'">'. $content. '</div>' ; ?> 

und die CSS

[data-content="Clear"]{ 
color:red; 
} 
0

Hallo auf der Grundlage der Quelle von Ihnen in der Frage, sofern Sie CSS-Selektor wie unten verwenden können, um die Elemente zu identifizieren

// take everything inside the list for div with same class 
List<WebElement> mycsselements = driver.findElements(By.cssSelector(".btn.btn-second-in-pair-not-desired.btn-tall")); 
System.out.println("Size of the div elements with same class name : " + mycsselements.size()); 
// printing value one by one 
System.out.println("First value is " + mycsselements.get(0).getText()); 
System.out.println("Second value is " + mycsselements.get(1).getText()); 
System.out.println("Third value is " + mycsselements.get(2).getText()); 

// and for the last one do it like below 

System.out.println("Last value is " + driver.findElement(By.cssSelector(".btn.btn-primary-stand-alone.btn-tall.search-btn")).getText()); 

und die Ausgabe ist:

Size of the div elements with same class name : 3 
First value is Clear search 
Second value is Raw Search 
Third value is Basic Search 
Last value is Search 

Hoffe, das hilft Ihnen

0

Benutzer unter CSS-Code:

css=div:contains('Clear search') 

Weitere Details auf den Link klicken: SauceLab

Verwandte Themen