js_window.print()

本文介绍了如何使用window.print()方法来打印网页内容,并探讨了如何针对特定div元素进行打印,同时提供了打印前后的事件处理技巧。

window.print()

功能:打印当前窗口的内容。

语法:window.print()

参数:无。

注:调用print()方法所引发的行为就像用户单击浏览器的打印按钮。通常,这会产生一个对话框,让用户可以定制或取消打印请求。

 

eg:打印当前窗口的内容。

<script type="text/javascript">

function print_Win() { window.print(); }

</script>

<input type="button" value="打印" onclick="print_Win()" />

 

window.print()  实际上,是浏览器打印功能菜单的一种程序调用。与点击打印功能菜单一样,不能精确分页,不能设置纸型,套打的问题更加无从谈起,只不过,可以让用户不用去点菜单,直接点击网页中的一个按钮,或一个链接里面调用罢了。事实上,很多用户都是采用这种方式打印,但是这种方式最致命的缺点是不能设置打印参数,比如纸型,页边距,选择打印机等等。

 

需要指出的是这种方法提供一个打印前和打印后的事件onbeforeprint、onafterprint。可以在打印前的时候重新编辑一些格式,专门送去打印,打印后又处理回来。

function window.onbeforeprint()

{ //将一些不需要打印的隐藏 }

function window.onafterprint()

{ //放开隐藏的元素 }

通过这两个方法,就可以实现页面的部分打印

 

window.print打印指定div

window.print可以打印网页,但有时候我们只希望打印特定控件或内容,怎么办呢?

首先我们可以把要打印的内容放在div中,然后用下面的代码进行打印。

<html>

<head>

<script language="javascript">

function printdiv(printpage)

{

var headstr = "<html><head><title></title></head><body>";

var footstr = "</body>";

var newstr = document.all.item(printpage).innerHTML;

var oldstr = document.body.innerHTML;

document.body.innerHTML = headstr+newstr+footstr;

window.print(); 

document.body.innerHTML = oldstr;

return false;

}

</script>

<title>div print</title>

</head>

<body>

//HTML Page

//Other content you wouldn't like to print

<input name="b_print" type="button" class="ipt" onClick="printdiv('div_print');" value=" Print ">

<div id="div_print">

<h1 style="Color:Red">The Div content which you want to print</h1>

</div>

//Other content you wouldn't like to print

</body>

</html>

还可以在不需打印的html元素处加class进行筛选

页面A,导航栏a(a1 a2 a3),b(b1 b2 b3)(b在a下),点击a,b都会让url发生变化 遍历点击a1 a2 a3 后进入点击a3的对应url,点击完b1 b2 b3后点击b3中的非导航元素,点击完后重新获取元素失败,我等待了页面加载完成 def click_all_clickable_elements(self, clicked_elements=None, depth=0, max_depth=15): if depth > max_depth: print("达到最大递归深度,停止点击") return if clicked_elements is None: clicked_elements = set() original_url = self.driver.current_url original_window = self.driver.current_window_handle elements = self.element_actions.get_all_clickable_elements() non_nav_elements = [] nav_elements = [] # 分类导航栏元素和非导航栏元素 for element in elements: try: element_id = self.element_actions.get_element_identifier(element) if element_id in clicked_elements: continue elements = self.element_actions.get_all_clickable_elements() if not element.is_displayed() or not element.is_enabled(): continue if self.is_navigation_bar(element): nav_elements.append((element, element_id)) else: non_nav_elements.append((element, element_id)) except Exception as e: print(f"元素分类失败: {e}") continue # 开始点击导航栏元素 for element, element_id in nav_elements: if element_id in clicked_elements: continue try: before_state = self.element_actions.get_page_state() self.element_actions.scroll_to_element(element) self.element_actions.highlight_element(element) self.element_actions.safe_click(element) clicked_elements.add(element_id) print(f"点击导航栏元素: {element_id}") if self.pass_handler(self.driver.current_url): continue self.element_actions.handle_alert() self.element_actions.handle_new_windows(original_window) time.sleep(0.5) if self.element_actions.get_page_state() != before_state: WebDriverWait(self.driver, 10).until( EC.presence_of_element_located((By.TAG_NAME, 'body')) ) self.click_all_clickable_elements(clicked_elements, depth=depth + 1) self.driver.back() WebDriverWait(self.driver, 10).until(EC.url_to_be(original_url)) nav_elements = self.element_actions.get_all_clickable_elements() #页面无变化说明点击完导航元素,开始点击非导航元素 else: for element, element_id in non_nav_elements: try: if self.element_actions.is_sensitive_element(element): clicked_elements.add(element_id) continue before_state = self.element_actions.get_page_state() self.element_actions.scroll_to_element(element) self.element_actions.highlight_element(element) self.element_actions.safe_click(element) clicked_elements.add(element_id) print(f"点击非导航栏元素: {element_id}") if self.pass_handler(self.driver.current_url): continue self.element_actions.handle_alert() self.element_actions.handle_new_windows(original_window) time.sleep(0.5) if self.element_actions.get_page_state() != before_state: WebDriverWait(self.driver, 10).until( EC.presence_of_element_located((By.TAG_NAME, 'body')) ) self.click_all_clickable_elements(clicked_elements, depth=depth + 1) self.driver.back() WebDriverWait(self.driver, 10).until(EC.url_to_be(original_url)) non_nav_elements = self.element_actions.get_all_clickable_elements() # 重新获取元素 except Exception as e: print(f"点击非导航栏元素失败: {e}") continue except Exception as e: print(f"点击导航栏元素失败: {e}") continue #重新获取元素,因为上一次返回后元素失效 elements = self.element_actions.get_all_clickable_elements() non_nav_elements = [] nav_elements = [] # 分类导航栏元素和非导航栏元素 for element in elements: try: element_id = self.element_actions.get_element_identifier(element) if element_id in clicked_elements: continue elements = self.element_actions.get_all_clickable_elements() if not element.is_displayed() or not element.is_enabled(): continue if self.is_navigation_bar(element): nav_elements.append((element, element_id)) else: non_nav_elements.append((element, element_id)) except Exception as e: print(f"元素分类失败: {e}") continue #点击非导航栏元素 for element, element_id in non_nav_elements: try: if self.element_actions.is_sensitive_element(element): clicked_elements.add(element_id) continue before_state = self.element_actions.get_page_state() self.element_actions.scroll_to_element(element) self.element_actions.highlight_element(element) self.element_actions.safe_click(element) clicked_elements.add(element_id) print(f"点击非导航栏元素: {element_id}") if self.pass_handler(self.driver.current_url): continue self.element_actions.handle_alert() self.element_actions.handle_new_windows(original_window) time.sleep(0.5) if self.element_actions.get_page_state() != before_state: WebDriverWait(self.driver, 10).until( EC.presence_of_element_located((By.TAG_NAME, 'body')) ) self.click_all_clickable_elements(clicked_elements, depth=depth + 1) self.driver.back() WebDriverWait(self.driver, 10).until(EC.url_to_be(original_url)) non_nav_elements = self.element_actions.get_all_clickable_elements() # 重新获取元素 except Exception as e: print(f"点击非导航栏元素失败: {e}") continue print("当前页面所有元素已点击完毕")
最新发布
08-27
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值