一、新窗口中的元素如何定位和操作
问题:点击某些链接,导致新标签页出现,需要进行窗口切换
进行窗口切换:1、找到新窗口的名字;2、切换到新窗口
#1.1找到新窗口的句柄,-1表示最后一个窗口,0表示第一个窗口
new_window=driver.window_handles[-1]
#1.2切换到新窗口
driver.switch_to.window(new_window)
二、脚本稳定性问题
运行10次,八次成功,一两次失败,如何提高脚本的稳定性
1、在稳定性不好的操作前加一个时间等待
2、隐式等待:driver.implicitly_wait(10)
3、优点:智能判断下一行代码需等待多久再执行,只需要写一次,后面所有代码都生效
缺点:有些特殊情形不生效
三、复杂的元素定位问题(find_elements:找所有满足条件的页面元素,然后通过下标选中第几个元素,经常用来组合ClassName,tagname使用)
比如:ID是动态变化,xpath,css selector都包含ID,class与其他元素的class一致
代码:
driver.find_elements_by_class_name("class值")[1]
四、窗口最大化
driver.maximize_window()
五、find_element_by_class_name()
不支持同时用两个class name定位(class name 中有空格,例如:classname为aaa_eee_03 fl),可以用css_selector代替class_name(),使用多个class_name()定位,在每一个class name前面加上小数点即可
例如:
driver.find_element_by_css_selector(".aaa_eee_03.fl")
六、find_elements()和find_element()
find_elements()可以找到页面中所有符合条件的页面元素
find_element()找到的是页面中满足条件的第一个页面元素
find_element()==find_elements()[0]
七、Select(页面元素)
XX=driver.find_element_by_id("ID编号")
Select(XX).select_by_visible_text("XXXX")
八、元素定位方法总结
find_element_by_id()
find_element_by_name()
find_element_by_class_name()
find_element_by_tag_name()
find_element_by_link_text()
find_element_by_partial_link_text() #未了解
find_element_by_xpath()
find_element_by_css_selector()
#优先顺序:ID,name,class name,<a>才适合link_text();比较万能的方法:xpath(但是通过右键粘贴的xpath有可能是错的,定位不到的时候需要自己验证一下);css selector 最重要的一种方法,但是还没了解透
版权归原作者 还有什么昵称没注册? 所有, 如有侵权,请联系我们删除。