PhantomJS无法看到通过AJAX填充的下拉选项
我一直在用Python的PhantomJS/Selenium来抓取一个网站。
这个网页上有一个下拉菜单,当我选择它的时候,另一个下拉菜单的选项会被填充。当我用Firefox自动化这个过程时,选择第一个下拉菜单的可见文本后,第二个下拉菜单就会被填充。
但是,使用PhantomJS时,同样的代码却不管用。
browser = webdriver.PhantomJS(executable_path=PHANTOMJS_PATH)
## browser = webdriver.Firefox()
wait = WebDriverWait(browser, WAIT_TIME)
browser.get(URL)
Select(browser.find_element_by_id('DropDown0')).select_by_visible_text('XXX')
def condition_wait_for_dropdown(driver):
ret = False
if driver.find_elements_by_xpath('//*[@id="DropDown1"]/option'):
ret = True
return ret
wait.until(condition_wait_for_dropdown)
我尝试用硬编码的睡眠时间来代替自定义的等待条件,并检查了网页的结构——第二个下拉菜单根本没有被填充。
这可能是网页本身的问题吗?如果是的话,我该怎么解决这个问题呢?
补充说明:为了更清楚,这在Selenium+Firefox下是可以正常工作的,所以有可能是PJS驱动本身的一个bug。
1 个回答
1
我找到了解决办法,所以把它留在这里,以备后用。
我在页面的表单里有一个输入框,所以在选择第一个下拉菜单后,我把光标移到了输入框,然后按了回车键。这样第二个下拉菜单就立刻加载出来了。
不过我还是不知道这个网页到底出了什么问题。