我要做的是尝试迭代所有选择值并获取一些数据。数据通过AJAX加载,因此页面不会重新加载 - 表格中的数据只是在变化。正如你所看到的,我试图使用显式等待,但这不起作用 - 选择值可以是" 4"但是表格中的信息仍然属于" 3"值。我想知道如何确定页面真的更新了?
还有一些类似的问题,但我找不到合适的解决方案。
for i in range(N):
try:
driver.find_element_by_xpath("//select[@id='search-type']/option[@value='%s']"%i).click()
driver.find_element_by_name("submit").click()
except:
print i
continue
elem = driver.find_element_by_id("my_id")
wait.until(lambda driver: driver.find_element_by_id('search-type').get_attribute("value")==str(i))
if no_results(get_bs_source(driver.page_source)):
print "No results %s"%i
if is_limited(get_bs_source(driver.page_source)):
print "LIMITED %s"%i
data+=get_links_from_current_page(driver)
我确实可以使用time.sleep(N),但这不是我想要的方式。
答案 0 :(得分:0)
Selenium使用document.ready
状态来确定页面是否已加载。
WebDriverWait
实现这种逻辑。你不应该直接使用document.readyState
!
在大多数功能中,它正在等待,例如:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
browser = webdriver.Firefox()
browser.get("http://something.com")
delay = 10 # seconds
WebDriverWait(browser, delay).until(EC.presence_of_element_located(browser.find_element_by_id('IdOfMyElement')))
在这种情况下,它将执行document.ready
2次:第一次browser.get
,第二次WebDriverWait
。
答案 1 :(得分:-1)
public class Test {
public static void main(String[] args) {
String y = "ab2";
if(y.compareTo("ab3") == -1) {
System.out.println("Test");
}
}
}