【发布时间】:2020-05-13 04:48:11
【问题描述】:
我正在网站中进行自动搜索,但是当我单击按钮或提交表单时,网站会重新加载并删除我的过滤器。我认为问题出在网站的一项功能上。
这是网站:
http://www.tjpe.jus.br/consultajurisprudenciaweb/xhtml/consulta/consulta.xhtml
功能
function dpf(f) {var adp = f.adp;if (adp != null) {for (var i = 0;i < adp.length;i++) {f.removeChild(adp[i]);}}};function apf(f, pvp) {var adp = new Array();f.adp = adp;var i = 0;for (k in pvp) {var p = document.createElement("input");p.type = "hidden";p.name = k;p.value = pvp[k];f.appendChild(p);adp[i++] = p;}};function jsfcljs(f, pvp, t) {apf(f, pvp);var ft = f.target;if (t) {f.target = t;}f.submit();f.target = ft;dpf(f);};
网站中有这样的“点击”:
onclick="if(typeof jsfcljs == 'function'){jsfcljs(document.getElementById('formPesquisaJurisprudencia'),{'formPesquisaJurisprudencia:j_id112':'formPesquisaJurisprudencia:j_id112'},'');}return false"
我的 selenium 和 python 代码:
import time
import os
import seleniumrequests
from selenium import webdriver
from seleniumrequests import Chrome
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait as wait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
chrome_options = Options()
chrome_options.add_experimental_option('prefs', {
"download.prompt_for_download": False,
"download.directory_upgrade": True,
"plugins.always_open_pdf_externally": True
}
)
estado = str(input("Em qual estado você deseja fazer a busca?\n"))
if (estado.upper() == 'PE'): #Mudar para "Case" quando houver outros estados
med = str(input("Qual medicamento você deseja procurar?\n"))
driver = webdriver.Chrome()
driver.get('http://www.tjpe.jus.br/consultajurisprudenciaweb/xhtml/consulta/consulta.xhtml')
driver.find_element_by_id('formPesquisaJurisprudencia:inputBuscaSimples').send_keys(med)
driver.find_element_by_id('//*[@id="formPesquisaJurisprudencia"]/div[5]/div/a[1]').click()
driver.find_element_by_xpath('//*[@id="resultadoForm:j_id20_body"]/div/table/tbody/tr[1]/td[2]/a').click()
driver.find_element_by_name('j_id77:j_id80').click()
【问题讨论】:
-
这是网站行为。你的问题到底是什么?
-
我还是不明白问题出在哪里。删除的过滤器?只需重新填充即可。
-
问题是网站重新加载并停留在同一页面,不显示过滤器的结果。如果我手动执行此操作,它会起作用,但在 selenium 中则不会。
标签: python selenium selenium-webdriver selenium-chromedriver