我正在尝试使用 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 ,但这也不起作用。
任何帮助表示赞赏。