1

我正在尝试使用 Selenium 自动化一些东西,但我在定位特定元素时遇到了一些麻烦。我已经使用相同的方法在不同的页面上找到了数百个其他元素,但由于某种原因,这个元素只是不想被定位。我想可能是由于页面上的 HTML 而不是 python 脚本?尽管我无法更改 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 回答