首页 > 其他分享 >Selenium 007 API

Selenium 007 API

时间:2023-05-22 11:00:59浏览次数:30  
标签:el get Selenium driver element window API 007 find


Selenium API

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()

driver.maximize_window()
driver.set_window_size(800,600)
size = driver.get_window_size()
driver.set_window_position(0,0)
position = driver.get_window_position()

driver.close()
driver.quit()

driver.get( "https://www.baidu.com")
driver.refresh()
driver.back()
driver.forward()

print(driver.current_url)
print(driver.title)
driver.get_screenshot_as_file("screeshot01.png") 

date = driver.get_screenshot_as_png()
with open("screenshot02.png","wb") as f:
    f.write(date)

date64 = driver.get_screenshot_as_base64() 
print(type(date64))
with open("screenshot03.png","w") as f:
    f.write(date64)
    
sourse = driver.page_source
with open("CSDN.html","wb") as f:
    f.write(sourse.encode()) 

el = driver.find_element_by_id("toolbar-search-input") 
# el = driver.find_element(By.ID,"toolbar-search-input")
el = driver.find_element_by_name("pwd")
el = driver.find_element_by_class_name("user-service-link")
el = driver.find_element_by_tag_name("input")
el = driver.find_element_by_link_text("首页")
el = driver.find_element_by_partial_link_text("首")
el = driver.find_element_by_css_selector("#app ul > li:nth-child(2) > a")
el = driver.find_element_by_xpath('//*[@id="tabTwo"]')

el = driver.find_elements_by_xpath('//*[@id="floor-sp_66"]/h4')

# element.click()
# element.clear()
# element.send_keys()
# element.submit()
# element.text
# element.get_attribute("attrName")
# element.size
# element.is_displayed()

handles = driver.window_handles
driver.switch_to.window(handles[0])
driver.switch_to.frame(el_frame) # 方式一:先定位,后切换
# driver.switch_to.frame("id") # 方式二:也可以直接使用id进行切换(如果有固定id的话)
driver.switch_to.default_content()
driver.switch_to.parent_frame()
driver.switch_to.alert()
driver.switch_to.alert.accept()
driver.switch_to.alert.dismiss()
# driver.switch_to.alert.send_keys("data")
from selenium.webdriver import ActionChains

# 鼠标右击操作,操作前需要将元素定位出来并传入相应的动作中;如果要执行操作,需要调用perform()
ActionChains(driver).context_click(el_logo).perform()
# 鼠标双击操作
ActionChains(driver).double_click(el_logo).perform()
ActionChains(driver).move_to_element(el_float).perform()
from selenium.webdriver.common.keys import Keys
el_search.send_keys(Keys.CONTROL,"a")
el_search.send_keys(Keys.CONTROL,"x")
el_search.send_keys("hello "+Keys.CONTROL,"v")
el_search.send_keys(Keys.BACKSPACE) # BACK_SPACE = BACKSPACE

from selenium.webdriver.support.select import Select

selObj = Select(ele_select)
selObj.select_by_index("0") # 通过索引选择,str
selObj.select_by_value("10") # 通过value值选择
selObj.select_by_visible_text("50") # 通过文本选择
all = selObj.all_selected_options # 查看所有已选
first = selObj.first_selected_option # 查看第一个已选
isMu = selObj.is_multiple # 查看是否多选
opt = selObj.options # 查看选项元素列表
print(all,first,isMu,opt)
调用JS代码
driver.get(
# 页面滚动
js1 = "window.scrollTo(0,2000)"
js2 = "var q = document.documentElement.scrollTop = 500"
driver.execute_script(js1)
driver.execute_script(js2)

# 循环下拉滚动
for i in range(20):
    js = "window.scrollTo(0,%s)" %(i*100)
    driver.execute_script(js)
    time.sleep(0.5)


WebDriverWait(driver,timeout=10,poll_frequency=0.5,ignored_exceptions=None).until(EC.presence_of_element_located((By.ID,"toolbar-search-input"))) # 在设置的时间内,默认每隔一段时间检测一次当前页面元素是否存在,如果超过时间检测不到则抛出异常

# 隐式等待
driver.implicitly_wait(10) # 单位为秒,为最大值;在这个最大值内只要定位到就结束等待,否则报错
cookies操作

# 获取cookies --> 字典dict格式
cookies = driver.get_cookies()
# 获取key对应的值
# driver.get_cookie(keyName)
# 删除指定名称的cookie
# driver.delete_cookie(name="xx")
# 删除所有cookies
driver.delete_all_cookies()
# 设置cookies
cookie = {'domain': '.csdn.net', 'expiry': 1645971310, 'httpOnly': False, 'name': 'Hm_ct_6bcd52f51e9b3dce32bec4a3997715ac', 'path': '/', 'secure': False, 'value': '6525*1*10_18797500640-1614435306890-873769'}
driver.add_cookie(cookie)


标签:el,get,Selenium,driver,element,window,API,007,find
From: https://blog.51cto.com/u_1439909/6321654

相关文章

  • 利用 Django REST framework 编写 RESTful API
        自动生成符合RESTful规范的API支持OPTION、HEAD、POST、GET、PATCH、PUT、DELETE根据 Content-Type生成browserable的交互页面(自动为API生成非常友好的浏览器页面)非常细粒度的权限管理(可以细粒度到field级别)示意图安装$pipinstalldjangorestframew......
  • 学习笔记-Java8新特性-第四节-StreamAPI
    StreamAPI利用StreamAPI可以像流水线一样操作处理数据源(数组、集合……)Stream自己不会存储元素Stream不会改变数据源,而是会返回一个持有处理结构的新StreamSteam操作时延迟执行的,他们会等到需要结果的时候才执行称为惰性求值Stream操作的三个步骤创建Stream......
  • 学习笔记-Java8新特性-第七节-新时间与日期API
    新时间与日期API本地时间类LocalDateLocalTImeLocalDateTime简介人读的时间提供以ISO-8601为标准的日期和时间提供简单的日期或时间并不包含当前的时间信息也不包含与时区相关的信息示例publicvoidtest1(){LocalDateTimelocalD......
  • APIO2023 游记
    5.18报到。排队时面到了DitaMirika神仙/se/se和_•́へ•́╬_住一个房间。不过他应该不认识我。晚上_•́へ•́╬_和群友出去玩了。而我和asdfz的另外几位神仙打了一晚上牌。5.19上午讲字符串。这是我能听懂的东西吗。电脑保养得不好,现在续航不到1h,所以也没带......
  • APIO 2023 线上游记
    2023/5/17润回上海,面基计划被迫取消了。真难过。话说我好像是第一次一个人坐火车,感觉很棒,虽然感觉少了很多流程,比如kfc()睡大觉。2023/5/18模拟赛,峰老师的信心场,打的还行,但是排名不高,下分了。larryzhong6500了,真有趣。下午乱做了点题,通关了Patrick'sParabox,然后开摆......
  • fastapi最简单使用示例
    直接上代码了fromfastapiimportFastAPI,Requestimportuvicornapp=FastAPI()@app.post("/")asyncdefcreate_item(request:Rquest):json_post_raw=awaitrequest.json()#下面的代码就是根据取得的数据进行自己的相应解析answer={这里自己填......
  • 算法学习记录(模拟枚举贪心题单):[NOIP2007]字符串的展开(未AC,明天找bug)
    题目链接https://ac.nowcoder.com/acm/contest/20960/1001解题思路很简单的模拟题,以后写模拟要先分两大类,元素在某个集合中存不存在的问题,再细分。未AC代码#include<iostream>#include<string>usingnamespacestd;//碰到'-'的展开条件:// 1.减号两侧同为小写字母......
  • Openresty 学习笔记(二)Nginx Lua 正则表达式相关API
    ngx.re.match语法: captures,err=ngx.re.match(subject,regex,options?,ctx?,res_table?)环境: init_worker_by_lua*,set_by_lua*,rewrite_by_lua*,access_by_lua*,content_by_lua*,header_filter_by_lua*,body_filter_by_lua*,log_by_lua*,ngx.timer.*,balancer......
  • requests: 基本使用、get、post、代理、cookie案例、超级鹰打码api
    1、requests_1_基本使用""".-''-..--._..._.'.-.)|__|......
  • 使用API数据接口获取商品详情数据的流程
    API数据接口是开发者获取第三方平台数据的一种方式,使用API接口可以快速地获取海量的商品详情数据,相比其他方式更加高效、实时。下面将介绍使用API数据接口获取商品详情数据的主要流程和步骤:申请API密钥服装打折网站在使用基于淘宝商品数据的API时,需要首先在淘宝开放平台申......