我不确定如何模拟单击" 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
答案 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 :(得分:0)
可能是您的元素ID或类型" linkElem"首次点击后更改。