我已经用python与硒结合编写了脚本,以从网页中获取一些信息。要获取内容,必须单击一些并填写输入框以产生结果。结果将显示在新选项卡中。因此,有必要切换到该特定窗口以解析信息。我的脚本可以非常高效地完成所有这些操作。
这是this one的后续帖子。
我面临的问题是我使用了很少的关键字来获取信息。当使用单个关键字时,driver.close()
可以解决问题,但是我使用多个关键字,所以当我使用driver.close()
时,没有更多的窗口可移动了。
问题:我如何才能使刮板关闭new tab
(当刮板从那里获取信息时)并循环回到主窗口以循环执行此过程,直到没有更多要检查的关键字了?
到目前为止,这是我的脚本:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
link = "https://officialrecords.broward.org/AcclaimWeb/search/SearchTypeName"
def get_information(driver,url):
for keyword in ['HMC DESIGN GROUP','HMC DESIGN GROUP']:
driver.get(url)
current = driver.current_window_handle
wait.until(EC.element_to_be_clickable((By.ID, "btnButton"))).click()
wait.until(EC.presence_of_element_located((By.ID,"SearchOnName"))).send_keys(keyword)
wait.until(EC.presence_of_element_located((By.ID, "btnSearch"))).click()
wait.until(EC.element_to_be_clickable((By.XPATH, "//td[contains(., 'HMC DESIGN GROUP')]"))).click()
wait.until(EC.new_window_is_opened)
driver.switch_to.window([window for window in driver.window_handles if window != current][0])
for items in wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR,".listDocDetails"))):
print(items.text)
# driver.switch_to.default_content()
# driver.close()
if __name__ == "__main__":
driver = webdriver.Chrome()
wait = WebDriverWait(driver,10)
try:
get_information(driver,link)
finally:
driver.quit()
答案 0 :(得分:1)
尝试实施以下解决方案:
@HostListener('document:click', ['$event.target'])
onClickCalled(target) {
if (target.id == "searText") {
this.showDropDown = true;
}
else {
this.showDropDown = false;
}
}
@HostListener("keyup", ['$event'])
onKeyUp(ev) {
var str: string;
if (ev.target.id == "searText") {
str = ev.target.value;
console.log(str);
}
}