from selenium import webdriver
from selenium.webdriver.common.actionchains import ActionChains as ac #鼠标事件包
from selenium.webdriver.common.keys import Keys as ky
#键盘事件_
driver = webdriver.Chrome()

#元素定位

driver.findelement_by_id(‘id’)#id定位
driver.find_element_by_name(‘name’)
#name定位
driver.find_element_by_class_name(‘class’)
#classname定位 取class属性 class属性有空格是多重属性,取其中一个就行
driver.find_element_by_tag_name(‘input’)
#标签定位
driver.find_element_by_link_text(‘baidu.com’)
#超链接href定位 精准匹配
driver.find_element_by_xpath(‘//[@id=”123”]’)
#xpath定位
driver.find_element_by_css_selector(‘css’)
#css定位
driver.find_elements_by_name(‘name’)[1].send_keys()
#复数定位
driver.find_element_by_partial_link_text(‘baidu’)
#超链接href定位 模糊匹配_

#xpath定位

driver.findelement_by_xpath(“//*[@id=’kw’]”).send_keys(“hao”)#通过id定位
driver.find_element_by_xpath(“//*[@id=’kw’]”)
#通过tag标签定位,匹配任何标签
driver.find_element_by_xpath(“//input[@id=’kw’]”)
#指定标签名称定位
driver.find_element_by_xpath(“//input[@class=’s_ipt’]”).send_keys(“hao”)
#通过class定位
driver.find_element_by_xpath(“//input[@name=’wd’]”).send_keys(“hao”)
#通过name定位
driver.find_element_by_xpath(“//input[@autocomplete=’off’]”).send_keys(“hao”)
#其他属性定位
driver.find_elements_by_xpath(“//input[@type=’text’ and @name=’wd’]”)
#多个属性定位_
driver.find_element_by_xpath(**”//
[text()=‘文本’]”)#文本定位
driver.find_element_by_xpath(
(//li[@data-id=’bug’])[2]“**)#复数定位

#层级关系

driver.findelement_by_xpath(“//form[@id=’form’]/span/input”)#下级元素
driver.find_element_by_xpath(“//*[@id=’nr’]/option[3]”)
#下级元素的第三个元素
driver.find_element_by_xpath(“//*[@id=’nr’]/../..”)
#找上层元素_

#模糊匹配

driver.findelement_by_xpath(“//a[contains(text(),’糯’)]”).click()#模糊匹配糯开头的a标签
driver.find_element_by_xpath(“//input[contains(@class,’s_ip’)]”).send_keys(“hao”)
#模糊匹配某个属性
driver.find_element_by_xpath(“//input[starts-with(@class,’s_ip’)]”).send_keys(“hao”)
#模糊匹配以xx开头的_

#定位表格

driver.findelement_by_xpath(‘.//*[@id=”bugList”]/tbody/tr[6]/td[4]/a’)#.//[@id=‘表格id’]/tbody/tr[行数]/td[列数]/a
x = 6
#参数化行和列_
y = 4
table = **”.//
[@id=’bugList’]/tbody/tr[%s]/td[%s]/a” **% (x, y )
driver.findelement_by_xpath(table).click()
#如何根据表格名称点后面按钮,用父子定位实现_

#属性定位

driver.findelement_by_css_selector(“#kw”).send_keys(“hao”)#通过id定位
driver.find_element_by_css_selector(“.s_ipt”).send_keys(“hao”)
#通过calss定位
driver.find_element_by_css_selector(“input”).send_keys(“hao”)
#通过标签定位
driver.find_element_by_css_selector(“[name=’kw’]”)
#通过name定位
driver.find_element_by_css_selector(“[autocomplete=’off’]”)
#通过autocomplete定位,不局限据这几种
driver.find_element_by_css_selector(“span>input”)
#父子定位
driver.find_element_by_css_selector(“form.fm>span>input.s_ipt”)
#组合定位
driver.find_element_by_css_selector(“form#form>span>input#kw”)
driver.find_element_by_css_selector(‘[class=”form-control”][name=”account”]’)
#同时满足两个属性
driver.find_element_by_id(“h5Input0”).send_keys(“E:\123.txt”)
#文件上传_

#Jquery定位

driver.executescript(‘$(#input1.val(输入文本的值)’)#输入值
driver.execute_script(‘$(#input1.val(‘’)’)
#清空文本_

#select下拉框多选项

driver.findelement_by_xpath(“.//*[@id=’nr’]/option[3]”).click()#直接通过xpath定位
driver.find_element_by_id(“nr”).find_element_by_xpath(“//option[@value=’50’]”).click()
#先定位下拉框,然后再二次定位
mouse = driver.find_element_by_link_text(“设置”)
# 先让选项框弹出来
ac(driver).move_to_element(mouse).perform()
driver.find_element_by_link_text(“搜索设置”).click()
# 再点击选项框里面的元素
a = driver.switch_to.alert()
#切换到弹出框
a.accept()
#点击弹出框确认按钮
print(a.text)
#打印弹出框文本信息_