立竿见影,来吧各位~ 后续在实践中补充
---------我是骑马的亚瑟
1.滚动条定位:
使用js脚本拖动到提定地方
target = driver.find_element_by_id("id_keypair") driver.execute_script("arguments[0].scrollIntoView();", target) #拖动到可见的元素
这种方法比较常用
2.下拉框定位:
from selenium.webdriver.support.ui import Select select标签 通过index进行选择 Select(driver.find_element_by_id("gender")).select_by_index(1) 通过value进行选择 Select(driver.find_element_by_id("gender")).select_by_value("2") 通过选项文字进行选择 Select(driver.find_element_by_id("gender")).select_by_visible_text("Male")
非select标签
先定位到下拉菜单
driver.find_element_by_xpath(“//tbody[@id=’teacherListTbody’]/tr[2]/td[9]/li/a”).click()
再对下拉菜单中的选项进行选择 driver.find_element_by_link_text(u”设置管理班级”).click()
3.鼠标与键盘的那些事
perform():执行所有ActionChains中存储的行为,可以理解成是对整个操作的提交动作;
引入ActionChains类
- ActionChains是自动执行低级交互的一种方式,例如:鼠标移动,鼠标点按,键盘操作,文本操作等。
- 当我们调用这里的方法时,这些操作会被先储存在一个队列中,当我们调用perform()方法时,队列中的操作会被按顺序执行,执行后队列被清空。
鼠标右击:
from selenium.webdriver.common.action_chains import ActionChains
定位到需要右击的元素:right_click = driver.find_element_by_id("id")
对元素进行右击操作:ActionChains(driver).context_click(right_click).perform()
鼠标左击:
ActionChains(driver).click(right_click)
鼠标悬停:
move_to_element()方法可以模拟鼠标悬停的动作,其用法与context_click()相同;
定位到需要悬停的元素:above = driver.find_element_by_id("id")
对元素进行右击操作:ActionChains(driver).move_to_element(above).perform()
鼠标双击:
定位到需要悬停的元素:above = driver.find_element_by_id("id")
对元素进行双击操作:ActionChains(driver).double_click(above).perform()
鼠标拖动:
drag_and_drop(source,target) 在源位置元素上按住鼠标左键,然后移动到目标元素上释放。
source:鼠标拖动的源元素
target:鼠标释放的目标元素
定位元素的源位置:source = driver.find_element_by_id("id")
定位元素要移到到的目标位置:target = driver.find_element_by_id("id")
元素进行拖动操作:ActionChains(driver).drag_and_drop(source,target).perform()
4.元素等待方法
WebDriverWait类提供了显式等待和隐式等待,显式等待的等待时间是固定的,固定了10s就必须等待10s,隐式等待的等待时间是个范围,例如最大10s,那么如果在3s的时候程序达到预期的结果,那么就不在继续后面的7秒,直接进入下一步操作,而如果超出10s还没有相应,程序就会报出相应的错误。
一、显式等待和隐式等待
WebDriverWait()是显式等待,等待的时间是固定的
implicitly_wait()方法是隐式等待,用来设置超时,一般把implicitly_wait()方法调用在加载测试地址后,等待所测试的应用程序加载
显性等待:
expected_conditions as EC
WebDriverWait(self.driver,wait,requence).until(EC.visibility_of_element_located((by,locator)))
1.元素可见:visibility_of_element_located((定位方式,定位表达式))
2.元素存在: presence_of_element_located((定位方式,定位表达式))
强制等待:
time.sleep(time)
隐形等待:
driver.implicitly_wait(20) # 隐性等待,最长等30秒
找到元素的基本方法是element()
5.元素查找
调用webdriver.的find_element()方法
1.单个元素查找:self.driver.find_element((定位方式,定位表达式))
2.多个元素查找:self.driver.find_elements((定位方式,定位表达式))
6.元素点击
element.click()
7.元素输入
send_keys(value)
8.获取元素属性值
driver.find_element(By,locator).get_attribute(attr_name)
9.获取文本
部分文本连接:driver.element_by_partial_link_text('maca')
文本链接:driver.element_by_link_text('macaca')