我有一个div,其中包含特定搜索查询的结果。此div中包含的文本更改为单击按钮以转到下一页。
在此div中包含的文本中,还有相应的页面编号。单击按钮转到下一页后,结果仍然需要加载,所以我想让驱动程序等待内容加载。
因此,我想等到字符串“Page x”出现在div中,其中x对应于要加载的下一页的编号。
为此,我试过了:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
# Search page
driver.get('http://searchpage.com')
timeout = 120
current_page = 1
while True:
try:
# Wait until the results have been loaded
WebDriverWait(driver, timeout).until(
EC.text_to_be_present_in_element(
locator=(By.ID, "SEARCHBASE"),
text_="Page {:}".format(current_page)))
# Click to go to the next page. This calls some javascript.
driver.find_element_by_xpath('//a[@href="#"]').click
current_page += 1
except:
driver.quit()
虽然这总是与文本不匹配。我在这里做错了什么?
只是检测页面中是否有任何改变也可以完成这项工作,但我还没有找到任何办法。
答案 0 :(得分:0)
尝试应用以下解决方案等待部分文本匹配:
WebDriverWait(driver, timeout).until(lambda driver: "Page {:}".format(current_page) in driver.find_element(By.ID, "SEARCHBASE").text)