gpt4 book ai didi

python - 页面源未反射(reflect)通过 selenium 提交表单后的更改

转载 作者:行者123 更新时间:2023-12-01 01:59:12 24 4
gpt4 key购买 nike

我创建了一个脚本来填写表单并提交。然后网站会显示结果。

一旦我使用selenium打开chrome,我就会得到driver.page_source,它会给出初始状态的正确html输出。

如果我在提交表单后使用driver.page_source,我只会再次获取初始状态的源,即:即使html发生变化,也不会反射(reflect)任何变化。

问题:提交表单后如何获取发生更改的页面的 HTML 输出?

提前感谢您的帮助!PS:我是新人,所以是的..

编辑:我找到了答案,它一直工作正常,但网页尚未完全加载,因此我仍然得到旧的源代码,所以我只是让驱动程序等待,然后再提取新的源代码。谢谢!

最佳答案

一旦您提交表格,然后再拿出page_source为了检查更改,值得一提的是,尽管WebClient可能已经实现了 'document.readyState'等于 "complete"在某个阶段,Selenium 重新获得程序执行的控制权,但这并不能保证所有关联的 JavascriptAjax 调用新页面已完成。除非与 DOM 树 关联的 JavascriptAjax 调用 完成,否则页面不会完全呈现,您可能无法跟踪预期的改变。

检查更改的理想方法是诱导 WebDriverWaitexpected_conditions 结合使用子句设置为 title_contains如下:

driver.find_element_by_xpath("xpath_of_element_changes_page").click()
WebDriverWait(browser, 10).until(EC.title_contains(("full_or_partial_text_of_the_new_page_title")))
source = driver.page_source

注意:虽然页面标题位于<head>HTML DOM 的标签更好的解决方案是诱导 WebDriverWait用于在 <body> 内所有情况下都存在的元素的可见性DOM Tree 的标签如下:

driver.find_element_by_xpath("xpath_of_element_changes_page").click()
WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.ID, "id_of_element_present_in_all_situation")))
source = driver.page_source

关于python - 页面源未反射(reflect)通过 selenium 提交表单后的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49851889/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com