2016-06-30 7 views
0

Web要素のXPATHを取得することが可能かどうかを知りたいですか?Selenium WebDriverのXPathの検索方法は?

test = driver.find_elements_by_css_selector('div.menu-listes ul.menu.menu-horizontal.menu_left li h3') 

for t in test: 
    //i want to have the XPATH 

私はt.locationを試してみましたが、私は本当にただ{'y': 0, 'x': 0}

+0

なぜあなただ​​けの代わりにCSSセレクタを使用してのXPathの自分自身を見つけませんか? – Jason

+0

それはちょうど例です、私はそれがウェブ要素のxpathを得る可能性があるかどうかにしたいですか? – parik

+0

ここにhtmlタグを置くべきでしょうか?あなたはCSSのロケータからxpathを見つけようとしていますか? –

答えて

1

Pythonでduplicate question(未テスト)からの回答:

test = driver.find_elements_by_css_selector('div.menu-listes ul.menu.menu-horizontal.menu_left li h3') 

for t in test: 
    driver.execute_script("""gPt=function(c){ 
           if(c.id!==''){ 
            return'id("'+c.id+'")' 
           } 
           if(c===document.body){ 
            return c.tagName 
           } 
           var a=0; 
           var e=c.parentNode.childNodes; 
           for(var b=0;b<e.length;b++){ 
            var d=e[b]; 
            if(d===c){ 
             return gPt(c.parentNode)+'/'+c.tagName+'['+(a+1)+']' 
            } 
            if(d.nodeType===1&&d.tagName===c.tagName){ 
             a++ 
            } 
           } 
          }; 
          return gPt(arguments[0]).toLowerCase();""", t) 
+0

それは働く、ありがとう – parik

+0

引用符付きの文字列の束ではなく、三重引用符で囲まれた文字列を使用した場合、このコードは書くのが簡単かもしれません。 –

+0

@BryanOakleyフェアポイント、私はそれを変更します。 – RemcoW

0

を未取得。 xpathは一意ではなく、自動的に取得した場合、おそらくxpathの効率的で堅牢なものではありません(たとえば、要素を調べて、Google Chromeが提供するxpathをチェックアウトするなど)。通常はdiv [1]/div [2]/div/div ..など)

悪いxpathがあるかもしれないという事実を気にしない場合は、親に到達するまで関数を書くことができますあなたが選択した要素へのパスを追跡しながら、すべてのルートを表示します。

関連する問題