Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何模拟点击;“下一步”;直到最后?_Python_Selenium_Web_Web Scraping - Fatal编程技术网

Python 如何模拟点击;“下一步”;直到最后?

Python 如何模拟点击;“下一步”;直到最后?,python,selenium,web,web-scraping,Python,Selenium,Web,Web Scraping,我不知道如何模拟单击“下一步”,我当前的代码将在第一个实例中停止..我还创建了一个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_c

我不知道如何模拟单击“下一步”,我当前的代码将在第一个实例中停止..我还创建了一个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

可能是您的元素id或“linkElem”的类型在第一次单击后更改

请尝试以下代码:

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)

代码持续检查
下一个
元素是否存在于
无限while循环中。如果存在,请单击它。否则,打破循环

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

注意:类似地,添加了
traceback
以打印完整的跟踪。只需打印异常跟踪以供参考

注意:
break
关键字,当无限循环到达最后一页并从
中出来时,它将中断无限循环,而
循环将继续执行下一个代码

参考资料:


  • 收益率是什么?抱歉忘了告诉我我刚刚开始python…没问题,请检查示例中的产量部分,并使用一个简单的沙盒案例进行尝试,以了解NDOKAY,但希望有人有代码或其他东西,我通过演示快速学习,不是填鸭式的,因为当有人给我看一个代码时,我会修改它并进行实验,你可以通过css选择器(“pag a”)找到所有的链接
    元素
    ,并且只使用
    linkElem[-2]
    不确定,但是当我开始在“动力总成/1”页面中获取css选择器时。它说#pag>a:n个孩子(1),然后是“…动力总成/2”直到最后一页,它都会说:第n个孩子(3)..这可能是原因吗?我怎么能修好它?是的!这就是问题所在。第一次点击后。元素位置发生了变化,所以为什么要取消调用以进行迭代。感谢您提供的信息,我刚刚开始编程,他们说python相对来说是一篇短文,所以我选择它。这段代码非常完美!!!我已经看过这种编码,但由于我有限的编程知识,我不鼓励修补它。非常感谢。我将逐段研究此代码。添加注释以更好地理解逻辑。我希望它能帮助你。你可以通过提供一些声誉,接受答案,祝我在新的一年里好运:)(只要它能帮助你)。这是表达感谢的最好方式!欢迎来到SO!愚蠢的声明但我也是stackoverflow的新手,我已经对你的答案投了赞成票。如果你能指导我关于声誉的事情,那会有所帮助。在你达到
    25或20
    rep(不确定)之前,你不能投赞成票。不过,你可以接受自己问题的答案(在我的答案旁边打勾)