【问题标题】:Selenium webdriver click through pages of a pagination and check if an element is presentSelenium webdriver 点击分页页面并检查元素是否存在
【发布时间】:2014-06-23 02:19:29
【问题描述】:

我正在尝试单击网站上的分页页面以及加载的每个页面我需要检查是否存在在上一步中创建的元素,因为页面的分配是动态的,我以前不知道它创建了新创建的元素将显示在哪个页面上,所以需要检查所有直到找到它。

分页代码是

    <div class="pagination" style="display: block; visibility: visible;"><ol><li class="current first"><a href="#">1</a></li><li><a href="#">2</a></li><li class="last"><a href="#">3</a></li></ol></div>

分页中也有可能超过 3 页,我意识到我需要一个 for 或 while 循环,但是当我尝试读取存在的元素数量时出现错误。

谢谢

【问题讨论】:

    标签: python-2.7 selenium webdriver


    【解决方案1】:

    使用find_elements_by_xpath():

    for page_link in driver.find_elements_by_xpath('//div[@class="pagination"]/ol/li/a'):
        print "page number: %s" % page_link.text
        page_link.click()
        # parse the page and find the element 
    

    另一种可能的解决方案是获取最大页码并在整数范围内迭代直到该最大值:

    max_page_element = driver.find_element_by_xpath('//div[@class="pagination"]/ol/li[@class="last"]/a')
    max_page = int(max_page_element.text)
    for page in xrange(1, max_page + 1):
        print "page number: %s" % page
        page_link = driver.find_element_by_xpath('//div[@class="pagination"]/ol/li/a[text()="%s"]' % page)
        page_link.click()
        # parse the page and find the element 
    

    【讨论】:

    • 感谢您的回答,当我在点击第二页后使用上述内容时,我收到以下错误元素不再附加到 DOM 我过去曾看到过并且能够解决使用等待或睡眠的问题,这似乎在这里没有效果,当我检查打印的内容时,我只看到页码:1 页码:2
    • @user3190832 好的,抛出错误时的分页部分是什么样子的?另外,你能分享一个链接让我测试一下吗?
    • 我认为这个问题是因为当我点击第二页时,类被改变了所以点击之前是&lt;ol&gt;&lt;li class="current first"&gt;&lt;a href="#"&gt;1&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#"&gt;2&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#"&gt;3&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#"&gt;4&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#"&gt;5&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#"&gt;6&lt;/a&gt;&lt;/li&gt;&lt;li class="last"&gt;&lt;a href="#"&gt;7&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;和之后&lt;ol&gt;&lt;li class="first"&gt;&lt;a href="#"&gt;1&lt;/a&gt;&lt;/li&gt;&lt;li class="current"&gt;&lt;a href="#"&gt;2&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#"&gt;3&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#"&gt;4&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#"&gt;5&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#"&gt;6&lt;/a&gt;&lt;/li&gt;&lt;li class="last"&gt;&lt;a href="#"&gt;7&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;
    • @user3190832 明白了,我已经用替代解决方案更新了答案。试一试。
    猜你喜欢
    • 1970-01-01
    • 2011-09-25
    • 1970-01-01
    • 2014-09-23
    • 1970-01-01
    • 2019-08-22
    • 2013-10-30
    • 2020-01-13
    • 2019-06-05
    相关资源
    最近更新 更多