尽管正确(?)xpath,Selenium Webdriver Python找不到元素

时间:2013-09-26 08:51:04

标签: python xpath selenium selenium-webdriver

我正在尝试使用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...

我不确定从哪里开始解决这个问题。 我尝试使用其他选择器,例如find_element_by_id用于id“id =':a'”,但这也不起作用。

感谢任何帮助。

1 个答案:

答案 0 :(得分: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')