Selenium的driver在页面JS触发之后有变化吗?如何获取?

问题:

获得一个webdriver之后,点击了页面中的更多button,然后页面加载了更多的内容,但是我现在的driver如何获取到点击之后的内容呢?
        more_btn = driver.find_element_by_css_selector(".zg-btn-white.zg-r3px.zu-button-more")
        more_btn.click()
现在的driver没有加载新的内容吧?
阅读 4.9k
2 个回答
现在的driver没有加载新的内容吧?

会加载新的内容的。
你使用的 driver 是什么?chromeDriver 还是 FireFoxDriver?
你知道 ipdb 吗?

 more_btn = driver.find_element_by_css_selector(".zg-btn-white.zg-r3px.zu-button-more")
 more_btn.click()
 import ipdb; ipdb.set_trace()

通过这种形式,暂停程序执行,然后你可以在浏览器上面查看或者通过 save_screenshot 保存截图查看

点击了肯定会加载的。
就是加载速度的问题。
建议你做一个判断:

# 等待直到元素出现, 点击
def waitClick(self, time, element):
    try:
        print('元素加载, 页面等待中 ...')
        WebDriverWait(self.browser, time).until(EC.presence_of_element_located(element))
        self.browser.find_element(*element).click()

    except Exception,e:
        print('元素异常, 页面已截图 :')
        self.screenshot()
        

异常时候会截图,正常时候给个最长等待时间。等待完之后,就可以匹配了。

匹配也需要正确。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题