1

Selenium を使用していくつかのことを自動化しようとしていますが、特定の要素を見つけるのに問題があります。同じ方法を使用して、文字通り何百もの他の要素をさまざまなページに配置しましたが、何らかの理由でこの要素を配置したくありません。おそらく、Pythonスクリプトではなく、ページ上のHTMLが原因だと思いますか? HTML を変更することはできませんが、その場合は何らかの回避策を見つける必要があります。

「index.html」と呼ばれるpythonと同じディレクトリのファイルにテストHTMLがあります

そのコードは次のとおりです。

<body>
<tbody>
<tr><td class="rd-xc-Kd-kl-lf"><table style="position: relative; left: 0px;" id=":a" class="rd-xc-Kd-kl" cellpadding="0" cellspacing="0"><tbody><tr><td><div class="rd-xc-Kd-Bj-Gm">Drag a photo here</div><div class="rd-xc-Kd-Bj-Fm">Or, if you prefer...</div><div id=":d"><div style="-moz-user-select: none;" role="button" class="a-b-c d-u d-u-F">Select a photo from your computer</div></div>   </td></tr></tbody></table><div id=":c" style="display:none" class="d-Zb rd-jl-Ub-Yd"><div class="rd-jl-Li">Uploading...</div><div aria-valuenow="0" aria-live="polite" role="progressbar" class="a-b-c Ub-Vb-Wb rd-d-Yb-Zb"><div style="width: 0%;" class="Ub-Vb-O"></div></div></div></td></tr>
</tbody>

</body>

(これは、YouTube/Google+ のドラッグ アンド ドロップ画像アップロード フォームから取得したコードの一部です。毎週カバー写真の更新を自動化しようとしています)

ここに私のテストpythonコードがあります:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver import ActionChains
import os


driver = webdriver.Firefox()
driver.implicitly_wait(20)

driver.get(os.getcwd()+"\index.html")

element = driver.find_element_by_xpath("//td[@class='rd-xc-Kd-kl-lf']")
print element
print element.text

私が得るエラーは、次のような NoSuchElementException です。

NoSuchElementException: Message: u'Unable to locate element:{"method":"xpath","selector":"//td[@class=\'rd-xc-Kd-...\']"}' ; Stacktrace: at FirefoxDriver.prototype.findElementInternal...

この問題の解決をどこから始めればよいのかよくわかりません。ID「id=':a'」のfind_element_by_idなど、他のセレクターを使用しようとしましたが、それも機能しませんでした。

どんな助けでも大歓迎です。

4

1 に答える 1

2

Firefox で xpath チェッカーを使ってみましたか? それは間違いなく私を過去に助けてくれました。 https://addons.mozilla.org/en-US/firefox/addon/xpath-checker/?id=1095

また、次のことを試すこともできます。

driver.find_element_by_class_name('rd-xc-Kd-Bj-Gm')
于 2013-09-26T15:22:57.627 に答える