我一直在尝试使用Python中的PhantomJS / Selenium设置来抓取网站。
页面中有一个下拉列表,选中后会填充另一个下拉列表的选项。当我使用Firefox自动执行此操作时,当我在第一个下拉列表中选择select_by_visible_text时,第二个下拉列表将被填充。
但是,相同的代码不适用于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)
我尝试使用硬编码的睡眠而不是自定义等待条件,并检查了DOM - 第二个下拉列表永远不会被填充。
这可能是网页本身的问题吗?如果是这样,我该如何解决这个问题?
编辑:只是为了澄清,这适用于Selenium + Firefox,因此存在这可能是PJS驱动程序本身的错误。
答案 0 :(得分:1)
我找到了解决这个问题的方法,所以最好把它留给后人。
我在页面表单中有一个输入字段,因此在选择第一个下拉列表后,我将焦点移动到输入字段,并向其发送了一个ENTER。第二个下拉列表立即加载。
仍然不知道这个网页是否有问题。