科技备案企业网站,如何做输入密码进入网站,手机网站模板用什么做,手机商城官网#x1f345; 点击文末小卡片 #xff0c;免费获取软件测试全套资料#xff0c;资料在手#xff0c;涨薪更快 seleninum作为自动化测试的工具#xff0c;自然是提供了很多自动化操作的函数#xff0c;下面列举下比较常用的函数#xff0c;更多可见官方文档#xff1a;… 点击文末小卡片 免费获取软件测试全套资料资料在手涨薪更快 seleninum作为自动化测试的工具自然是提供了很多自动化操作的函数下面列举下比较常用的函数更多可见官方文档
Selenium Documentation — Selenium 4.21.0 documentation
定位元素
find_element_by_class_name根据class定位 find_element_by_css_selector根据css定位 find_element_by_id根据id定位 find_element_by_link_text根据链接的文本来定位 find_element_by_name根据节点名定位 find_element_by_partial_link_text根据链接的文本来定位只要包含在整个文本中即可 find_element_by_tag_name通过tag定位
find_element_by_xpath使用Xpath进行定位
PS把element改为elements会定位所有符合条件的元素返回一个List比如find_elements_by_class_name。
鼠标动作
有时需要在页面上模拟鼠标操作比如单击、双击、右键、按住、拖拽等。
需要导入ActionChains类 selenium.webdriver.common.action_chains.ActionChains。 使用ActionChains(driver).XXX调用对应节点的行为。
click(element)单击某个节点 click_and_hold(element)单击某个节点并按住不放 context_click(element)右键单击某个节点 double_click(element)双击某个节点 drag_and_drop(source,target)按住某个节点拖拽到另一个节点
drag_and_drop_by_offset(source, xoffset, yoffset)按住节点按偏移拖拽key_down按下特殊键只能用(Control, Alt and Shift)比如CtrlCActionChains(driver).key_down(Keys.CONTROL).send_keys(‘c’).key_up(Keys.CONTROL).perform()
key_up释放特殊键 move_by_offset(xoffset, yoffset)按偏移移动鼠标 move_to_element(element)鼠标移动到某个节点的位置 move_to_element_with_offset(element, xoffset, yoffset)鼠标移到某个节点并偏移 pause(second)暂停所有的输入多少秒 perform()执行操作可以设置多个操作调用perform()才会执行 release()释放鼠标按钮 reset_actions重置操作
send_keys(keys_to_send)模拟按键比如输入框节点.send_keys(Keys.CONTROL,’a’)全选输入框内容输入框节点.send_keys(Keys.CONTROL,’x’)剪切模拟回退节点.send_keys(keys.RETURN)
或者直接设置输入框内容输入框节点.send_keys(‘xxx’) send_keys_to_element(element, *keys_to_send)和send_keys类似
弹窗
对应类selenium.webdriver.common.alert.Alert。
如果触发了某个时间弹出了对话框可以调用下述方法获得对话框alert driver.switch_to_alert()然后可以调用下述方法
accept()确定 dismiss()关闭对话框 send_keys()传入值 text()获得对话框文本
页面前进/后退/切换
driver.switch_to_window(driver.window_handles[1])#切换窗口
driver.forward() #前进
driver.back() # 后退#打印当前url
print(driver.current_url)
页面截图
driver.save_screenshot(“截图.png”)设置代理
# 设置代理
from selenium import webdriveroptions.add_argument(--proxy-serverhttp://xxxxxxx)
driver_path rD:/chromedriver/chromedriver.exe
driver webdriver.Chrome(executable_pathdriver_path,optionsoptions)
driver.get(http://xxxxxx)
页面等待
现在的网页越来越多采用了Ajax技术这样程序便不能确定何时某个元素完全加载出来了。如果实际页面等待时间过长导致某个dom元素还没出来但是如果脚本代码直接使用了这个WebElement那么就会抛出NullPointer的异常。
为了避免这种元素定位困难而且会提高产生ElementNotVisibleException的概率。所以Selenium 提供了两种等待方式一种是隐式等待一种是显式等待。
1、显式等待
显式等待指定某个条件然后设置最长等待时间。如果在这个时间还没有找到元素那么便会抛出异常了。
from selenium import webdriver
from selenium.webdriver.common.by import By#WebDriverWait 库负责循环等待
from selenium.webdriver.support.ui import WebDriverWait#expected_conditions 类负责条件出发
from selenium.webdriver.support import expected_conditions as EC
driver webdriver.PhantomJS()
driver.get(http://www.xxxxx.com/loading)try:# 每隔10秒查找页面元素 idmyDynamicElement直到出现则返回element WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, myDynamicElement)))finally:driver.quit()
如果不写参数程序默认会0.5s调用一次来查看元素是否已经生成如果本来元素就是存在的那么会立即返回。
下面是一些内置的等待条件可以直接调用这些条件而不用自己写某些等待条件了。
title_is
title_contains
presence_of_element_located
visibility_of_element_located
visibility_of
presence_of_all_elements_located
text_to_be_present_in_element
text_to_be_present_in_element_value
frame_to_be_available_and_switch_to_it
invisibility_of_element_located
element_to_be_clickable – it is Displayed and Enabled.
staleness_of
element_to_be_selected
element_located_to_be_selected
element_selection_state_to_be
element_located_selection_state_to_be
alert_is_present
2、隐式等待
隐式等待比较简单就是简单地设置一个等待时间单位为秒。
from selenium import webdriverdriver webdriver.PhantomJS()
driver.implicitly_wait(10) # seconds
driver.get(http://www.xxxxx.com/loading)
myDynamicElement driver.find_element_by_id(myDynamicElement)
当然如果不设置默认等待时间为0。
执行JS语句
driver.execute_script(js语句)#比如滚动到底部
js document.body.scrollTop10000
driver.execute_script(js)
补充
# 找到“嵌套”的iframe
iframe driver.find_element_by_xpath(//iframe)# 切换到iframe
driver.switch_to.frame(iframe) # 切换到iframe
获取元素标签的内容(文本信息) get_attribute(‘textContent’)
获取元素内的全部HTML get_attribute(‘innerHTML’)
获取包含选中元素的HTML get_attribute(‘outerHTML’)
最后感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走 这些资料对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴我走过了最艰难的路程希望也能帮助到你凡事要趁早特别是技术行业一定要提升技术功底。