立竿见影,来吧各位~   后续在实践中补充

                                                                                                                                                                                                                                                      ---------我是骑马的亚瑟

  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')