【転載】java-selenium 8要素位置決め方式

24807 ワード

8種類の位置決め方式
原文リンク参照リンク
一、ID位置決め
一般的にページ要素のid属性は現在のページで一意であるため、ID位置決めを使用すると位置決めの一意性が保証され、他の位置決め方式のように複数のページ要素に位置決めすることはできない.ただし、一部のページ要素にはid属性値がなく、ID位置決め方式が使用できない場合があります.
HTMLソース
<a onclick="return false;" id="lb" name="tj_login" href="https://passport.baidu.com/v2/?login&tpl=mn&amp">  </a>

Javaコード
WebElement element = driver.findElement(By. id("lb"));

二、name位置決め
HTMLソース
<a onclick="return false;" id="lb" name="tj_login" href="https://passport.baidu.com/v2/?login&amp">  </a>

Javaコード
WebElement element=driver.findElement(By.name("tj_login"));

三、className位置決め
classnameロケーションでは、同じ効果を示すページ要素の1つまたはグループを検索できます.
HTMLソース
<a class="reg" href="https://passport.baidu.com/v2/?reg&u=http%3A%2F%2Fwww.baidu.com%2F">  </a>

Javaコード
WebElement  element = driver.findElement(By.className( "reg")); 

四、linkText位置決め(全ての文字をリンク)
この方法では、リンクの表示文字と完全に一致する必要があります.ページに複数のリンク文字が高度に似ている場合によく使用され、一部のリンク文字を使用して位置決めできません.
HTMLソース
<a name="tj_setting" href="http://www.baidu.com/gaoji/preferences.html">    </a>

Javaコード
WebElement  element =  driver.findElement(By.linkText( "    " ));

五、partialLink Text位置決め(リンク部分文字)
この位置決め方式は、マッチングリンクの表示文字をぼかしているだけでよく、マッチングページのリンク文字が不定期に少量変化する場合によく用いられ、ぼかしマッチング方式を使用すると、リンクの位置決めの精度を高めることができ、リンクのセットをぼかしてマッチングする場合にも用いることができる.
HTMLソース
<a href="http://www.sogou.com">sogou  </a><br>
<a href="http://www.baidu.com">baidu  </a>

Javaコード
WebElement  element =  driver.findElement(By. partialLinkText( "baidu" ));
List<WebElement> elements=driver.findelement(By.partialLinkText("  "));

六、tagname位置決め(ラベル名位置決め)
ラベル名の配置方法は、主に複数のページ要素を一致させる場合に使用され、見つかったページ要素オブジェクトをカウント、遍歴します.の
HTMLソース
<a name="tj_setting" href="http://www.baidu.com/gaoji/preferences.html">    </a>
<a href="http://www.baidu.com">baidu  </a>

Javaコード
WebElement element=driver.findElement(By.tagName("a"));
List<WebElement> elements= driver.findElement(By.tagName(a));

七、XPath位置決め(ここで述べるXPath例は全て相対経路位置決め)
HTMLソース
<html>
    <head>
        <title>SeleniumElement</title>
        <meta http-equiv=Content-Type content="text/html;charset=utf-8">
        <meta http-equiv=X-UA-Compatible content="IE=edge,chrome=1">
        <meta content=always name=referrer>
    </head>
    <body>
        <div id='sousuo'>
            <a href="http://www.sogou.com">sogou  </a><br>
            <a href="http://www.baidu.com">baidu  </a>
        </div>
        <br>
         <div id='ifra' >
            <td>Input   </td>
            <input type="text" id="input" name='ips'/>
        </div>    
        </br>
        <div id='radio'>
            <td>RadioBox   </td></br>
            <input type='radio' name="fruit" class='yi'/><label>yi</label></br>
            <input type='radio' name="fruit" class='er'/><label>er</label></br>
            <input type='radio' name="fruit" class='san'/><label>san</label></br>
            <input type='radio' name="fruit" class='si'/><label>si</label></br>
            <input type='radio' name="fruit" class='wu'/><label>wu</label>
        </div>            
        <br>
        
    </body>
</html>

1.インデックス番号を使用して1からナビゲートします.
JAvaコード
//         2 radio  
WebElement element=driver.findElement(By.xpath("//input[2]"))

2.要素属性値を使用して配置
ウェブページの要素は通常様々な属性値を含み、多くの属性値に一意性がある属性値が変更される可能性が低く一意値があることを確認できる場合は、要素属性値の位置決め方法を使用してXPath位置決め式を作成することを推奨します.
JAvaコード
//  class        yi    
WebElement yi=driver.findElement(By.xpath("//input[@class='yi']"));
//   id    sousuo div href    http://www.baidu.com   
WebElement ss=driver.findElement(By.xpath("//div[@id='sousuo']/a[@href='http://www.baidu.com']"));
//  type        
WebElement t=driver.findElement(By.xpath("//input[@type='text']"));

3.ファジイ属性値による位置決め
自動化の実装では、ページ要素の属性値が動的に生成されます.すなわち、リフレッシュするたびに要素の属性値が変動します.このような難題の一部を解決するには、ファジイ属性値の位置決め方法を使用します.使用方法は、>starts-with()>contains()の2つです.
JAvaコード
//     id        “in”        
WebElement in=driver.findElement(By.xpath("//input[starts-with(@id,'in')]"));
//    href    “baidu”        
WebElement bu=driver.findElement(By.xpath("//a[contains(@href,'baidu')]"));

4.ページ要素のテキストを使用して配置
JAvaコード
//        baidu       
WebElement bd=driver.findElement(By.xpath("//a[text()='baidu  ']")); 

//     sogou     
WebElement sg=driver.findElement(By.xpath("//a[contains(text(),'sogou')]"));

5.XPathの軸(Axis)を使用して元素の位置決めを行う
XPath軸を使用して、ドキュメントツリーの要素の相対的な位置関係に基づいて配置します.まず、比較的良い位置決めの要素を見つけて、それと位置決めする要素の相対的な位置に基づいて位置決めを行って、いくつかの要素が位置決めしにくい問題を解決することができます.提供するXPath軸キーワードは以下のとおりです:1 parent:現在のノードの上位親ノードを選択②child:現在のノードの下位サブノードを選択③ancestor:現在のノードのすべての上位ノードを選択④descestor:現在のノードのすべての上位ノードを選択⑤following:現在のノードの後に表示されるすべてのノードを選択⑥following-sibling:現在のノードのすべてのレベルノードを選択⑦preceding:現在のノードの前のすべてのノードを選択⑧preceding-sibling:現在のノードの前のすべてのレベルノードを選択
WebdriverのKeys()クラスは、キーボード上のすべてのキーの操作を提供します.
from selenium.webdriver.common.keys import Keys
#               keys   。
#            :
send_keys(Keys.BACK_SPACE) #   (BackSpace)
send_keys(Keys.SPACE) #   (Space)
send_keys(Keys.TAB) #   (Tab)
send_keys(Keys.ESCAPE) #   (Esc)
send_keys(Keys.ENTER) #   (Enter)
send_keys(Keys.CONTROL,'a') #  (Ctrl+A)
send_keys(Keys.CONTROL,'c') #  (Ctrl+C)