0

JavaScript の実行後にのみ作成される要素を取得しようとしていますが、次のエラー メッセージが引き続き表示されます。

selenium.common.exceptions.NoSuchElementException: Message: u'Unable to locate element: {"method":"id","selector":"post-count"}' ; Stacktrace: Method FirefoxDriver.prototype.findElementInternal_ threw an error in file:///tmp/tmpittNsw/extensions/fxdriver@googlecode.com/components/driver_component.js

この要素を cnn.com に引き上げようとしています。私のコード:

socket.setdefaulttimeout(30)
browser = webdriver.Firefox() # Get local session of firefox
browser.get(article_url_txt) # Load page

result = browser.find_element_by_id("post-count")
4

2 に答える 2

1

探している要素はの中にありiframeます。

以下は私のためにトリックをしました:

from selenium.webdriver.support.wait import WebDriverWait

# ...

frame = WebDriverWait(browser, 30).until(lambda x: x.find_element_by_id("dsq1"))
browser.switch_to_frame(frame)
result = WebDriverWait(browser, 30).until( lambda x: x.find_element_by_id("post-count"))

WebDriverWait(...).until(...)念のため、要素を動的に作成できるようにするための使用を含めたことに注意してください。

于 2013-02-24T15:32:33.820 に答える
0

要素が表示されるまで暗黙的に待機するよう WebDriver に指示できます。

browser.implicitly_wait(30)
result = browser.find_element_by_id("post-count")
于 2015-11-20T11:21:15.747 に答える