如何模拟点击"下一步"直到最后?

时间:2017-01-02 10:47:04

标签: python selenium web web-scraping

我不确定如何模拟单击" Next",我的当前代码将在第一个实例停止。我还创建了一个for循环,但它只是说对象不可迭代。修改我的代码的方法?

from selenium import webdriver
browser = webdriver.Firefox()
import time
browser.get('https://www.autocodes.com/obd-code-list/powertrain/1')

linkElem = browser.find_element_by_css_selector("#pag > a")
type(linkElem)
linkElem.click() # follows the "Next" link

2 个答案:

答案 0 :(得分:1)

尝试以下代码:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC


browser = webdriver.Firefox()
import time
count = 0
browser.get('https://www.autocodes.com/obd-code-list/powertrain/1')
while(1):
    try:
        linkElem = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH, "//div[@id='pag']//a[contains(text(),'Next')]")))
    except:
        import traceback
        traceback.print_exc()
        print "last page reached."
        break;
    # type(linkElem)
    count += 1
    print "count " , count
    linkElem.click() # follows the "Next" link
    time.sleep(1)

代码会不断检查Next中是否存在infinite while loop元素。如果存在,请单击它。否则,打破循环。

注意:count变量作为调试语句添加,以了解循环计数。如果不需要,您可以删除与其相关的代码。

注意:同样,添加traceback以打印完整的跟踪。只打印异常跟踪供您参考。

注意:break关键字,一旦到达最后一页,就会打破无限循环并退出while循环并继续下一个代码。

参考文献:

  1. http://selenium-python.readthedocs.io/waits.html

答案 1 :(得分:0)

可能是您的元素ID或类型" linkElem"首次点击后更改。