我对selenium相当陌生,但似乎驱动程序最初缓存HTML,因此对HTML的任何后续修改都不会被捕获(除非页面刷新)。
我的HTML看起来像这样:
<div class="questionnaire-form-step questionnaire-form-step-0">
<div class="questionnaire-form-step questionnaire-form-step-1 hide">
<div class="questionnaire-form-step questionnaire-form-step-2 hide">
我有一个按钮带我到下一个div并隐藏前一个。按钮还修改类名,这是我在xpath查询中所依赖的。
form = driver.find_element_by_xpath("//div[contains(@class, 'questionnaire-form-step') and not(contains(@class, 'hide'))]")
为了调试,我在每一步都输出innerHTML,它总是questionnaire-form-step-0的子元素。
我的假设正确吗?如果没有,如何刷新驱动程序缓存而不刷新整个页面?
是的,你是正确的。当找到元素状态(定位器)时,无法刷新它。您应该在每一步之前重新找到您的元素以获得新的状态。