背景
我正在使用Python下载页面的源代码。我有Selenium登录网站,然后"找到" HTML。
elem = driver.find_element_by_id("account_id")
elem.send_keys("username")
elem = driver.find_element_by_id("password")
elem.send_keys("abc123")
elem.send_keys(Keys.RETURN)
print "Finding element..."
html = driver.find_element_by_xpath('//*')
然后将HTML保存到文本文件中,这样可以完美地工作,通常在5秒后完成。
问题:
如果我尝试等待首页加载页面(相当复杂)的JavaScript,Selenium无法找到该元素。我尝试过以下方法:
import time
...
elem.send_keys(Keys.RETURN)
print "Waiting for page to load..."
time.sleep(10)
print "Finding element..."
html = driver.find_element_by_xpath('//*')
在最后一次打印之后,永远不会完成。类似的方法
wait = raw_input("Press Enter after the page has finished loading.")
有同样的问题,从来没有找到任何东西。
我也尝试过这么少的"蛮力"方法:
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
import selenium.webdriver.support.ui as ui
...
elem.send_keys(Keys.RETURN)
print "Waiting for page to load..."
element = ui.WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "SomeElement")))
永远不会停止等待,无论我使用什么元素ID。
我是Selenium的新手,不知道还有什么可以尝试。
答案 0 :(得分:0)
这不是一个真正的解决方案,但是为我解决问题的解决方法是从使用Chrome驱动程序切换到Firefox驱动程序。
ETA:Chrome驱动程序无法在Linux上运行。