2-5-3js执行器
Document对象
通过Selenium获取元素属性.
注释:Selenium获取元素属性,只能获取属性,不能修改属性值
1 # 通过Selenium获取元素属性 2 #将定位赋值给el 3 el = driver.find_element_by_xpath('//*[@id="ai-topsearch"]') 4 #获取到el的value属性 5 value=el.get_attribute('value') 6 print(value)
通过Document对象来修改元素属性(Document对象不支持xpath定位),步骤:
1 # 通过Document对象来修改元素属性 2 js="document.getElementById('ai-topsearch').setAttribute('value','abd')" 3 # 执行js语句函数:js执行器 4 driver.execute_script(js)
当定位元素中只能通过xpath定位,想要修改元素的text属性
1 #定位元素,并赋值为el 2 el = driver.find_element_by_xpath('/html/body/div[2]/div/ul[1]/div/div/a[1]') 3 # innerHTML修改文本text的内容为123 4 js = "arguments[0].innerHTML='123'" 5 # 灵活版js执行器操作:通过传递元素参数,来快速实现元素的识别与操作 6 driver.execute_script(js, el)
Document整体代码
1 from time import sleep 2 from selenium import webdriver 3 driver=webdriver.Chrome() 4 #访问商城 5 driver.implicitly_wait(10) 6 driver.maximize_window() 7 driver.get('http://39.98.138.157/shopxo/') 8 # 通过Selenium获取元素属性 9 #将定位赋值给el 10 el = driver.find_element_by_xpath('//*[@id="ai-topsearch"]') 11 #获取到el的value属性 12 value=el.get_attribute('value') 13 print(value) 14 # 通过Document对象来修改元素属性 15 js="document.getElementById('ai-topsearch').setAttribute('value','abd')" 16 # 执行js语句函数:js执行器 17 driver.execute_script(js) 18 #定位元素,并赋值为el 19 el = driver.find_element_by_xpath('/html/body/div[2]/div/ul[1]/div/div/a[1]') 20 # innerHTML修改文本text的内容为登录123 21 js = "arguments[0].innerHTML='登录123'" 22 # 灵活版js执行器操作:通过传递元素参数,来快速实现元素的识别与操作 23 driver.execute_script(js, el)
滚动条
1 from time import sleep 2 from selenium import webdriver 3 driver=webdriver.Chrome() 4 #访问百度 5 driver.get('http://www.baidu.com') 6 driver.implicitly_wait(10) 7 sleep(2) 8 #左右滚动 9 js="window.scrollTo(800,0)" 10 driver.execute_script(js) 11 #上下滚动 12 sleep(2) 13 js="document.scrollingElement.scrollTop=200" 14 driver.execute_script(js)
居中显示
1 from time import sleep 2 from selenium import webdriver 3 driver=webdriver.Chrome() 4 #访问百度 5 driver.get('http://39.98.138.157/shopxo/index.php') 6 driver.implicitly_wait(10) 7 #将“如何管理店铺”居中显示,scrollIntoView() 8 el = driver.find_element_by_xpath('/html/body/footer/div[1]/ul[1]/li[4]/div/p[5]/a') 9 js = "arguments[0].scrollIntoView()" 10 driver.execute_script(js, el)
网页弹窗
1 from time import sleep 2 3 from selenium import webdriver 4 5 driver = webdriver.Chrome() 6 def web_alert(): 7 #访问alert确认弹窗 8 driver.get(r'E:\CMVIP03\CMVIP03\class04\alert1.html') 9 #切换到alert弹出窗本体 10 web_alert=driver.switch_to.alert 11 sleep(2) 12 #点击确认按钮 13 web_alert.accept() 14 driver.quit() 15 def web_confirm(): 16 #访问confirm确认取消弹窗 17 driver.get(r'E:\CMVIP03\CMVIP03\class04\confirm1.html') 18 #切换到弹出窗本体 19 web_confirm=driver.switch_to.alert 20 sleep(2) 21 #点击确认按钮 22 # web_alert.accept() 23 #点击取消按钮 24 web_confirm.dismiss() 25 driver.quit() 26 def web_prompt(): 27 #访问prompt1.html确认弹窗 28 driver.get(r'E:\CMVIP03\CMVIP03\class04\prompt1.html') 29 #切换到弹窗本体 30 web_prompt=driver.switch_to.alert 31 sleep(2) 32 #获取弹出窗中的文本 33 text=web_prompt.text 34 print(text) 35 #在文本框中输入文本 36 web_prompt.send_keys('995999') 37 #点击确认按钮 38 web_prompt.accept() 39 #确认弹窗 40 web_alert() 41 #确认取消弹窗 42 web_confirm() 43 # #输入框----没有实现,代码存在问题 44 web_prompt()
alert1.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <script> alert(1); </script> </body> </html>
confirm1.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <script> confirm(789); </script> </body> </html>
prompt1.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <script> prompt('ooooo'); </script> </body> </html>