Selenium(16):通过调用javascript进行操作
调用javascript
当webdriver遇到无法完成的操作时候,这个时候可以使用javascript来完成,webdriver提供了execute_script()接口来调用js代码。
执行js有两种场景:
一种是在页面上直接执行js
另一种是在某个已经定位的元素上执行js
常用的调用javascript语法如下
设置弹框的文本内容
js_code_str = 'alert("hello,world !!");'
加边框 元素高亮显示
js_code_str_01 = "arguments[0].style.border='5px solid red';"
浏览器滚动
js_code_str_02 = 'document.body.scrollTop=10000;'
滚动到指定元素
js_code_str_03 = 'arguments[0].scrollIntoView();'
修改元素的属性 一般用在时间控件只能选不能输入,可以把文本框的readonly属性去掉
js_code_str_04 = 'arguments[0].setAttribute("value","newdream");'
删除元素属性
js_code_str_05 = 'arguments[0].removeAttribute("value");'
代码如下:
import os from selenium import webdriver from selenium.webdriver.common.by import By current_path = os.path.dirname(os.path.abspath(__file__)) # 当前路径 driver_path = os.path.join(current_path,'../webdriver/chromedriver.exe') # driver路径 pages_path = os.path.join(current_path,'../pages/element_samples.html') # 本地网页路径 driver = webdriver.Chrome(executable_path=driver_path) # Firefox,Ie等 driver.get('file://%s'%pages_path) # 本地网页打开file:// 打开部署好的站点http:// # 设置弹框的文本内容 js_code_str = 'alert("hello,world !!");' driver.execute_script(js_code_str) # 加边框 元素高亮显示 js_code_str_01 = "arguments[0].style.border='5px solid red';" element_obj_01 = driver.find_element(By.XPATH,'//input[@name="attach[]"]') driver.execute_script(js_code_str_01,element_obj_01) # 浏览器滚动 js_code_str_02 = 'document.body.scrollTop=10000;' driver.execute_script(js_code_str_02) # 滚动到指定元素 js_code_str_03 = 'arguments[0].scrollIntoView();' element_obj_03 = driver.find_element(By.XPATH,'//input[@id="friend"]') driver.execute_script(js_code_str_03,element_obj_03) # 修改元素的属性 一般用在时间控件只能选不能输入,可以把文本框的readonly属性去掉 js_code_str_04 = 'arguments[0].setAttribute("value","newdream");' element_obj_04 = driver.find_element(By.XPATH,'//input[@name="alterbutton"]') driver.execute_script(js_code_str_04,element_obj_04) # 删除元素属性 js_code_str_05 = 'arguments[0].removeAttribute("value");' element_obj_05 = driver.find_element(By.XPATH,'//input[@name="alterbutton"]') driver.execute_script( js_code_str_05 , element_obj_05 )