以下はリンクの束<a elements.
ONLY one属性hrefの値としてサブストリング「long」があります
<a class="c1" href= "very_lpng string" > name1 </a>
<a class="g2" href= "verylong string" > name2 </a> // The one that I need
<a class="g4" href= "very ling string" > name3 </a>
<a class="g5g" href= "very ng string" > name4 </a>
...................
href
にサブストリング「long」が含まれるリンクをクリックする必要があります。これどうやってするの?
PS:driver.findElement(By.partialLinkText("long")).click();
// b/c名前で選択
Hrefにサブストリング「long」が含まれるリンクをクリックする必要があります。これどうやってするの?
CSSセレクターの美しさ。
あなたの声明は...
driver.findElement(By.cssSelector("a[href*='long']")).click();
これは、英語では、
href
属性を持ち、その属性contains
'long'を持つ 'a'要素を見つけます
自動化のための独自のセレクターの効果的な定式化に関する有用な記事と、他のすべての等価演算子のリストを見つけることができます。 contains
、starts with
など...で見つけることができます: http://ddavison.io/css/2014/02/18/effective-css-selectors.html
driver.findElement(By.partialLinkText("long")).click();
を使用します
あなたはこれを行うことができます:
//first get all the <a> elements
List<WebElement> linkList=driver.findElements(By.tagName("a"));
//now traverse over the list and check
for(int i=0 ; i<linkList.size() ; i++)
{
if(linkList.get(i).getAttribute("href").contains("long"))
{
linkList.get(i).click();
break;
}
}
この中で、最初にすべての<a>
タグを見つけて、list.After
に格納します。リストを1つずつ繰り返して、href属性に含まれる<a>
タグを見つけます長い文字列。そして、その特定の<a>
タグをクリックして、ループから抜け出します。
Xpathロケーターの助けを借りて、同じことを達成することもできます。
あなたの声明は次のようになります:
driver.findElement(By.xpath(".//a[contains(@href,'long')]")).click();
そして、すべてのリンクをクリックするには、URLに長いが含まれています:
List<WebElement> linksList = driver.findElements(By.xpath(".//a[contains(@href,'long')]"));
for (WebElement webElement : linksList){
webElement.click();
}