Web自动化之Selenium execute_script函数常用JS脚本
在Web自动化测试中,Selenium的execute_script函数是一个非常强大的工具,它允许我们直接在浏览器中执行JavaScript代码。使用时只需将JS代码按照字符串的格式传入即可。
常用JS代码
以下是一些常用的JavaScript代码示例,可以在Selenium的execute_script函数中直接使用:包括操作当前页面和操作某个元素。
操作当前页面
获取页面标题
page_title=browser.execute_script('return document.title;')
print(page_title)
获取页面高度
page_height = browser.execute_script("return document.documentElement.scrollHeight;")
print(page_height)
获取窗口大小
window_size = browser.execute_script("return {width: window.innerWidth, height: window.innerHeight};")
print(window_size['width'], window_size['height'])
设置窗口大小
browser.execute_script("window.resizeTo(800, 600);")
滚动到页面底部
browser.execute_script("window.scrollTo(0, document.body.scrollHeight);")
刷新页面
browser.execute_script("window.scrollTo(0, document.body.scrollHeight);")
获取页面当前url
current_url = browser.execute_script("return window.location.href;")
print(current_url)
修改页面Url
browser.execute_script("window.location.href = 'https://www.example.com';")
页面重定向
browser.execute_script("window.location.replace('url');")
获取当前页面内所有herf链接
js_script = """
var links = document.querySelectorAll('a');
var hrefs = [];
links.forEach(function(link) {
var href = link.getAttribute('href');
if (href) {
hrefs.push(href);
}
});
return hrefs;
"""
all_links = driver.execute_script(js_script)
# 打印所有获取到的链接
for link in all_links:
print(link)
操作某个元素
点击元素
element=browser.find_element(By.XPATH,'')
browser.execute_script('arguments[0].click()',element)
获取元素的文本
element=browser.find_element(By.XPATH,'')
text=browser.execute_script('return arguments[0].textContent;',element)
print(text)
获取元素的属性值
element=browser.find_element(By.XPATH,'')
attribute=browser.execute_script('return arguments[0].getAttribute('href');',element)
print(attribute)
滚动元素到视口
element=browser.find_element(By.XPATH,'')
browser.execute_script(arguments[0].scrollIntoView({behavior: 'smooth', block: 'center'});",element)
检查元素是否可见
element = browser.find_element(By.ID, 'dynamic-element')
is_visible = browser.execute_script("return arguments[0].offsetWidth > 0 && arguments[0].offsetHeight > 0;", element)
print(is_visible)
获取元素的尺寸
size = browser.execute_script("return {width: arguments[0].offsetWidth, height: arguments[0].offsetHeight};", element)
print(size['width'], size['height'])