8种定位方式:id,name,class_name, <a>标签的link_text()以及partial_link_text(), css_select,
find_element_by_class_name
1.不支持同时用2个class name定位
2.可以用css_selector()代替class_name(),使用多个class_name定位,在每个class_name的前面加上小数点即可
例如:driver.find_element_by_css_selector('.shopCar_btn_03.fl').click()
.shopCar_btn_03和fl是2个class_name,在css_selector中使用2个class_name定位了,并且用小数点连接的。
find_element_by_css_selector
例:find_element_by_css_selector("['value='2']")
切换句柄:
点击某些链接,可能导致新标签页面出现,但是selenium默认的还是在原来的页面操作,所以需要切换到新的页面。
1.找到新窗口的句柄:new_window=driver.window_handles[-1]。-1表示倒数第一个,即最新
2.通过句柄切换到新窗口:driver.switch_to(new_window)
find_elements:
find_element 可以找到页面中满足条件的第一个页面元素
find_elements 可以找到页面中满足条件的所有页面元素
关系:find_element==find_elements[0]
3种等待:
1.显式等待time.sleep(),每次等待都要重新写
2.隐式等待 driver.implicitly_wait(等待的秒数)
优点:智能的判断,下一行代码应该等待多久再执行;只需要写一次,后面所有代码都生效 缺点:有些特殊情况不起作用
3.等待直到某元素出现.用来解决脚本稳定性问题,避免等待时间不够找不到元素,或者等待时间太长,效率低的问题
窗口最大化:driver.maximize.window()
select下拉框选择
1.定位下拉框:element=driver.find_element(。。。)
2.把找打的页面元素,转换成下拉框类型Select:select=Select(element)
3.调用Select类中的select_by_value()方法.一共3种方法:
select(element).select_by_value(选项的value属性的值)
select(element).select_by_index(第几个选项)
select(element).select_by_visible_text(选项的文本值)
复杂元素的定位问题:find_elements 找到所有满足条件的元素,然后根据下标找到指定的元素。
通常
form表单submit方法
日历控件如何处理
传统是点击
新方法是删除readnoly属性,然后send进去
imput标签,是输入框。readonly属性表示只读,不能写入东西
没睡好,先睡觉,很多没整理,明天弄