网站开发技术包括,wordpress怎么让手机端好看,常见的网络直接营销有哪些,电子商务有限公司网站测试八股文-Selenium
总结了一些selenium的常见问题#xff0c;欢迎评论区补充#xff0c;如需教学辅导可私信作者
什么是Selenium#xff1f;
Selenium是一个自动化测试框架#xff0c;用于模拟用户在Web应用程序中的交互行为。它支持多种语言#xff0c;包括Java、Py…测试八股文-Selenium
总结了一些selenium的常见问题欢迎评论区补充如需教学辅导可私信作者
什么是Selenium
Selenium是一个自动化测试框架用于模拟用户在Web应用程序中的交互行为。它支持多种语言包括Java、Python、Ruby等
Selenium有哪些组件?
Selenium由三个组件组成:Selenium IDE、Selenium WebDriver和Selenium Grid
Selenium IDE是一个浏览器插件用于录制和回放用于在Web应用程序中的交互行为Selenium WebDriver是一个用于编写自动化测试脚本的API它支持多种编程语言Selenium Grid是一个分布式的测试工具用于在多台计算机上并行运行测试
什么是WebDriver?
WebDriver是Selenium的一个API用于编写自动化测试脚本。它提供了一组方法用于模拟用户在Web应用程序中的交互行为如点击链接填写表单提交表单等。
WebDriver有哪些常用的方法?
get:打开指定urlfind_element:查找页面上的元素send_keys:向页面上的元素发送输入click:点击页面上的元素submit:提交表单get_attribute:获取元素的属性值text:获取元素的文本内容
如何处理弹出窗口? 浏览器的弹窗有三种:Alert仅有确认按钮、Confirm确认或取消、Prompt带有输入框,我们无法通过元素定位来操作 driver.switch_to.alert.accept() //确认三种弹窗都可以
driver.switch_to.alert.dismiss() //取消、不同意 confirm和prompt可以使用
dirver.switch_to.alert.text //打印弹窗信息
driver.switch_to.alert.send_keys(text) //向弹窗中输入内容如何模拟鼠标和键盘操作? 操作键盘可以使用selenium.webdriver.common.keys包 操作鼠标可以使用selenium.webdriver.common.action_chain包 move_to_element():将鼠标移动至指定的element对象
click():执行单击操作
click_and_hold():单击不释放
release():释放单击
double_click():双击操作
context_click() :右键单击
perform():立即执行操作如何处理下拉框?
使用selenium.webdriver.support.select下的Select类可以通过以下三种方式对元素进行选择
通过索引:Select(el).select_by_index(1)通过value属性值:Select(select_element).select_by_value(1990)通过显示文本进行选择:Select(el).select_by_visible_text(2020)
如何在多个窗口间进行切换?
先获取所有的创建调用driver.window_handles会返回一个窗口数组如果需要获取当前窗口可以调用chrome.current_window_handle如果需要切换窗口可以调用driver.switch_to_window(windows[index]),浏览器每打开一个窗口会在列表尾部添加一个窗口对象index-1时则会切换到新打开的窗口
如何进入和退出iFrame
进入
1.使用iframe的name属性进行切换drvier.switch_to.frame(attr_name)
2.先找到该iframe,然后再切换driver.switch_to.frmae(driver.find_element_by_name(attr_name))
3.使用索引找到该iframedriver.switch_to.frame(4)
退出
1.如果需要切换到最外层则使用:driver.switch_to.default_content()
2.切换到上一层的iframe
driver.switch_to.parent_frame()Selenium中的八大选择器
查找方式方法名称根据ID属性find_element_by_id根据name属性find_element_by_name根据超链接的文字信息find_element_by_link_text根据超链接的部分文字信息find_element_by_partial_link_text根据tag名称find_element_by_tag_name根据class名称find_element_by_class_name根据xpath表达式find_element_by_xpath根据css选择器find_element_by_css_selector
Selenium如何执行JS脚本
selenium中提供了操作js脚本的方法
driver.execute_script(script,args)Selenium如何截取屏幕
driver.get_screenshot_as_file(path)
Selenium三种等待 隐式等待:就是在创建driver时为浏览器对象创建一个等待时间这个方法得不到某个元素就等待一段时间直到拿到某个元素位置,在使用隐式等待的时候实际上浏览器会在你自己设定的时间内部不断的刷新页面去寻找我们需要的元素,只写一次全局有效针对于页面加载 driver.implicitly_wait()显示等待:明确的要等到某个元素的出现等不到就一直等除非在规定的时间之内都没找到 需要使用selenium.webdriver.support.expected_conditions和selenium.webdriver.support.wait.WebDriverWait from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait # 显示等待
# 在当前浏览器最长等待20s, 每间隔1s确认一次直到传入的元素定位是可见的
username_loc (By.NAME, username)
#构建WebDriverWait对象调用until方法
WebDriverWait(driver,20,1).until(EC.visibility_of_element_located(username_loc)强制等待: python time.sleep(timer)Java Thread.sleep(time)
TimeUnit.时间单位.sleep(time)元素定位不到可能是为什么?
UI被改动网络卡顿元素被嵌套再iframe中元素被嵌到shadow-root中页面元素是动态的(每次刷新后元素属性会发生变化)由于元素被遮挡需要通过js点击定位表达式有误