from selenium import webdriver
wd = webdriver.Chrome(r'c:\chromedriver.exe')
wd.get('http://www.baidu.com')
#选择元素1
element = wd.find_element_by_id('kw')
element.send_keys('python')
element = wd.find_element_by_id('su')
element.click()
#element.send_keys('python\n') 中的\n就是click()
#选择元素2:找到多个
elements = wd.find_elements_by_class_name() #list形式
for element in elements:
print(element.text)
#element = wd.find_element_by_class_name() 只返回找到的第一个
#wd.find_elements_by_class_name()没有符合条件的 返回空列表
#wd.find_element_by_class_name() 没有符合的 报错
#选择元素3:
elements = wd.find_element_by_tag_name('span')
for element in elements:
print(element.text)
#选择元素4:
#通过WebElement选择:对应元素内部
#通过wWbdriver选择:整个页面
spans = wd.find_element_by_tag_name('span')
span = wd.find_element_by_tag_name('span')
#选择元素5:
#对搜索出来的结果选取
import time
from selenium import webdriver
wd = webdriver.Chrome(r'c:\chromedriver.exe')
wd.get('http://www.baidu.com')
element = wd.find_element_by_id('kw')
element.send_keys('python\n')
time.sleep(1) #加载页面
element = wd.find_element_by_id('2')
print(element.text)
#选择元素5:
#对搜索出来的结果选取
import time
from selenium import webdriver
wd = webdriver.Chrome(r'c:\chromedriver.exe')
wd.implicitly_wait(10) #如果当前页面没有找到,不会立刻报错,每隔半秒钟去找,最多等10s
wd.get('http://www.baidu.com')
element = wd.find_element_by_id('kw')
element.send_keys('python\n')
element = wd.find_element_by_id('2')
print(element.text)
import time
from selenium import webdriver
wd = webdriver.Chrome(r'c:\chromedriver.exe')
wd.implicitly_wait(10) #如果当前页面没有找到,不会立刻报错,每隔半秒钟去找,最多等10s
wd.get('http://www.baidu.com')
wd.find_element_by_id('kw').send_keys('python')
wd.find_element_by_id('su').click()
element = wd.find_element_by_id('2')
# 点击元素
print(element.text)
wd.quit() #关闭窗口
import time
from selenium import webdriver
wd = webdriver.Chrome(r'c:\chromedriver.exe')
wd.implicitly_wait(10) #如果当前页面没有找到,不会立刻报错,每隔半秒钟去找,最多等10s
wd.get('http://www.baidu.com')
wd.find_element_by_id('kw').send_keys('python')
wd.find_element_by_id('su').click()
element = wd.find_element_by_id('2')
# 点击元素
#print(element.get_attribute('outerHTML'))#获取当前element所在类下所有信息
print(element.get_attribute('innerHTML')) #获取当前element之下的所有信息
wd.quit() #关闭窗口
import time
from selenium import webdriver
wd = webdriver.Chrome(r'c:\chromedriver.exe')
wd.implicitly_wait(10) #如果当前页面没有找到,不会立刻报错,每隔半秒钟去找,最多等10s
wd.get('http://www.baidu.com')
wd.find_element_by_id('kw').send_keys('python')
wd.find_element_by_id('su').click()
element = wd.find_element_by_id('2')
print(element.get_attribute('innerText'))#获取全部文本
print(element.get_attribute('textContent'))#获取全部文档
wd.quit() #关闭窗口
# CSS Selector 根据位置来
wd.find_element_by_css_selector('.animal') #.表示值<.animal> class
wd.find_element_by_css_selector('#1') #寻找id值是1,前面用’#‘
wd.find_element_by_css_selector('animal') # <animal>
# 相当于wd.find_element_by_tag_name('animal')
# 寻找 子元素 和 后代元素
# 元素1 元素2 元素3....满足上层到下层次 不一定是父代
# 元素1>元素2>元素3....由父代到子代
# 这两种写法可以混用
elements = wd.find_elements_by_css_selector('[href="http://www.miitbei......"]') #根据属性中的特殊值来选择
# ctrl+f 直接看写法是否正确
#表示或 用,
#.plant,.animal #plant或者animal类
#.plant,#kw #palnt类或者id为kw
# #t1>span,p ==> #t1>span 或者 p
# #t1>span,#t1>p ==> #t1>span 或者 #t1.p
# 按照次序来选择子节点
# span:nth-child(2) # 每个span里面的第2个子节点
# span:nth-lastchild(2) # 每个span倒数第2 个子节点
# span:nth-of-type(2) #每个父节点下的第2个span
# #t1 :nth-child(odd)
# #t1 :nth-child(even)
# #t2 p:nth-of-type(odd) #类型为奇数的t2下的p节点...
#兄弟节点:
# h3+span #选取 h3后面紧跟着的span
# h3~span #h3后面的所有span
# frame 切换
wd.switch_to.frame(frame_reference) #在frame内层去操作,html在frame中
wd.switch_to.default_content() #切换到外层
# 切换到新的窗口
mainWindow = wd.current_window_handle #把现在的存下来,方便以后返回
for handle in wd.windows_handles:
wd.switch_to.window(handle)
if 'Bing' in wd.title:
break #切换到含‘bing’的网页
print(wd.title)
wd.swittch_to.window(mainWindow) #切换回最初的页面
# radio选择框:点选 单选
wd.find_element_by_css_selector('#s_radio input[value="xiaolei"]'.click()
#checkbox框 多选 先全部还成未点击 再点选
elements = wd.find_elements_by_css_selector('#s_checkbox input[checked="checked"]')
for element in elements:
element.click()
wd.find_element_by_css_selector('#s_radio input[value="xiaolei"]'.click()
#select类 :select_by_value //select_by_index //select_by_visible_text
# deselect_by_value //deselect_by_index //deselect_by_visible_text //deselect_all
from selenium.webdriver.support.ui import Select
select = Select(wd.find_element_by_id("ss_single")) #Select(类)
select.select_by_visible_text("xiaoleilaishi")
#action_Chains的高级操作
import time
from selenium import webdriver
wd = webdriver.Chrome(r'c:\chromedriver.exe')
wd.implicitly_wait(10) #如果当前页面没有找到,不会立刻报错,每隔半秒钟去找,最多等10s
wd.get('http://www.baidu.com')
from selenium.webdriver.common.action_chains import ActionChains
ac = ActionChains(wd)
#把光标移到 元素上
ac.move_to_element(wd.find_element_by_css_selector('[name="tj_briicon"]')).perform()
#冻结页面
# 在 开发者工具栏 console 里面执行如下js代码
# setTimeout(function(){debugger}, 5000) #过5s冻住,给时间给你动到想到的位置
from selenium import webdriver
driver = webdriver.Chrome()
driver.implicitly_wait(5)
driver.get('http://f.python3.vip/webauto/test4.html')
# --- alert ---
driver.find_element_by_id('b1').click()
# 打印 弹出框 提示信息
print(driver.switch_to.alert.text)
# 点击 OK 按钮
driver.switch_to.alert.accept()
from selenium import webdriver
driver = webdriver.Chrome()
driver.implicitly_wait(5)
driver.get('http://f.python3.vip/webauto/test4.html')
# --- confirm ---
driver.find_element_by_id('b2').click()
# 打印 弹出框 提示信息
print(driver.switch_to.alert.text)
# 点击 OK 按钮
driver.switch_to.alert.accept()
driver.find_element_by_id('b2').click()
# 点击 取消 按钮
driver.switch_to.alert.dismiss()
from selenium import webdriver
driver = webdriver.Chrome()
driver.implicitly_wait(5)
driver.get('http://f.python3.vip/webauto/test4.html')
# --- prompt ---
driver.find_element_by_id('b3').click()
# 获取 alert 对象
alert = driver.switch_to.alert
# 打印 弹出框 提示信息
print(alert.text)
# 输入信息,并且点击 OK 按钮 提交
alert.send_keys('web自动化 - selenium')
alert.accept()
# 点击 Cancel 按钮 取消
driver.find_element_by_id('b3').click()
alert = driver.switch_to.alert
alert.dismiss()
'''import time
from selenium import webdriver
wd = webdriver.Chrome(r'c:\chromedriver.exe')
wd.implicitly_wait(10) #如果当前页面没有找到,不会立刻报错,每隔半秒钟去找,最多等10s
wd.get('http://f.python3.vip/webauto/test1.html')
elements = wd.find_elements_by_xpath('/html/body/div') # #直接子节点 根节点:html 绝对路径
for element in elements:
print(element.text)
#print(element.get_attribute('outerHTML'))
wd.quit() #关闭窗口
'''
import time
from selenium import webdriver
wd = webdriver.Chrome(r'c:\chromedriver.exe')
wd.implicitly_wait(10) #如果当前页面没有找到,不会立刻报错,每隔半秒钟去找,最多等10s
wd.get('http://f.python3.vip/webauto/test1.html')
elements = wd.find_elements_by_xpath('/html/body/div')
elements = wd.find_elements_by_xpath("//div//p") #在里面的节点 div/* :*表示任意
for element in elements:
print(element.text)
wd.quit() #关闭窗口