
1、直接打开selenium的主界面,按照File→New→Class的顺序进行点击。
2、下一步,需要在d出的窗口中设置相关内容并确定创建。
3、这个时候,输入获取元素属性的对应代码。
4、如果没问题,就按照图示启用取得id值的功能。
5、等完成上述 *** 作以后,继续通过对应网页选择图示按钮跳转。
6、这样一来会得到相关结果,即可达到目的了。
本章节主要内容:
switch_to适用场景:
处理JSd框
切换frame
切换浏览器窗口
Switch_to处理JSd框
JavaScript简称JS,应用于HTML网页,通过 *** 纵网页窗口及网页元素,从而实现动态效果。
JSd框类型:警告框alert、确认框confirm、提示框prompt
浏览器窗口中如果有JavaScript的d出框,需要通过switch_to语句处理。
相关方法:
Switch_to切换窗口
浏览器中有多个窗口时,如果想切换到其他窗口 *** 作,需要调用switch_to方法
切换到目标窗口:
相关方法:
示例:
Switch_to切换frame
如果元素在html的frame或iframe中,则无法直接定位到元素。需要先切换到该frame中,再进行定位及其他 *** 作。
相关方法:
一般来说我们与页面的交互可以使用WebElement的方法来进行点击等 *** 作。但是有时候我们需要一些更复杂的动作,就需要用到我们的Action Chains了。
通过action对象模拟鼠标 *** 作,如双击,右击,拖拽,悬停等 *** 作:
普通键:
有名按键:
无名按键:a-z,0-9
修饰键:
修饰键单独使用没有意义,一般和别的按键配合使用。
Actions *** 作:
使用示例
输入大写或按键上方的字符:
JS,JavaScript的简称,广泛用于HTML网页,通过 *** 纵网页窗口及网页元素,从而实现动态效果。
webdriver无法完成的 *** 作,可以由JS配合完成。
示例:
参考JS:
获取标题:documenttitle
d出提示框:alert('我是一个d框');
改变元素属性:q=documentgetElementById('kw');qstyledisplay='block';
Selenium-JS处理滚动条
通过js实现滚动条拖动效果:
移动元素到窗口顶部:
移动元素到窗口底部:
窗口移动指定距离:
移动窗口到某位置:
input标签上传:借用input元素的sendkeys方法实现
示例:
非input标签上传---借用其他工具如autoIt:
• 用于Windows GUI自动化 *** 作
• 通过它可以组合使用模拟键击、鼠标移动和窗口/控件 *** 作等来实现自动化任务。
• 它使用类似BASIC的脚本语言。
• 可以通过转换工具把脚本转换为exe文件
应用程序从安全考虑,都在登录或某 *** 作节点使用验证码。
验证码是一种区分用户是计算机还是人的公共全自动程序。
自动化时验证码处理方式:
cookie的 *** 作:
Selenium-截图 *** 作
截图:
AJAX(Asynchronouse JavaScript And XML:异步JavaScript和XML)通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新,这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行局部更新。传统的网页(不使用Ajax)如果需要更新内容,必须重载整个网页页面。
因为传统的网页在传输数据格式方面,使用的是 XML 语法,因此叫做 AJAX ,其实现在数据交互基本上都是使用 JSON 。使用AJAX加载的数据,即使使用了JS将数据渲染到了浏览器中,在 右键->查看网页源代码 还是不能看到通过ajax加载的数据,只能看到使用这个url加载的html代码。
法1:直接分析ajax调用的接口。然后通过代码请求这个接口。
法2:使用Selenium+chromedriver模拟浏览器行为获取数据。
Selenium 相当于是一个机器人。可以模拟人类在浏览器上的一些行为,自动处理浏览器上的一些行为,比如点击,填充数据,删除cookie等。 chromedriver 是一个驱动 Chrome 浏览器的驱动程序,使用他才可以驱动浏览器。当然针对不同的浏览器有不同的driver。以下列出了不同浏览器及其对应的driver:
现在以一个简单的获取百度首页的例子来讲下 Selenium 和 chromedriver 如何快速入门:
参考:Selenium的使用
直接直接分析ajax调用的接口爬取
selenium结合lxml爬取
上一章,就有个问题,print(driverfind_element_by_tag_name('label')text)为空,打印不出文字????
这是由于 webdriver spec 的定义,Selenium WebDriver 只会与可见元素交互,所以获取隐藏元素的文本总是会返回空字符串。
可以这样子检查下:
如果上面是False,那就说明字符串隐藏了,所以得用下面这种方法提取:
上述均以实例 *** 作,可自行替换 ‘label’ 标签!
首先,并不是说你一打开一个页面就会产生一个session。
所谓session你可以这样理解:当你与服务端进行会话时,比如说登陆成功后,服务端会为你开壁一块内存区间,用以存放你这次会话的一些内容,比如说用户名之类的。那么就需要一个东西来标志这个内存区间是你的而不是别人的,这个东西就是 session id ( jsessionid 只是tomcat中对session id的叫法,在其它容器里面,不一定就是叫jsessionid了。),而这个内存区间你可以理解为session。
然后,服务器会将这个session id发回给你的浏览器,放入你的浏览器的cookies中(这个cookies是内存cookies,跟一般的不一样,它会随着浏览器的关闭而消失)
'''
options = webdriverChromeOptions()
optionsadd_argument('--headless') # 可以使用无头模式
driver = webdriverChrome(executable_path=CHROME_DRIVER_PATH, chrome_options=options)
driverget(URL) # 打开一个地址
cookie = driverget_cookies() #获取所有cookie列表
hsession = cookie[0]['value']
'''
在Chrome的开发者工具的application/cookie里面可以查到你要访问的session
招聘顺丰科技
测试工程师( 薪资15-25k)
岗位描述
# 定位 UI 元素 (WebElements)
find_element_by_id
find_elements_by_name
find_elements_by_xpath
find_elements_by_link_text
find_elements_by_partial_link_text
find_elements_by_tag_name
find_elements_by_class_name
find_elements_by_css_selector
# 获取元素数据
eleget_attribute('href')
eletext
eleinner
eleget_attribute('outerHTML')
eleget_attribute('innerHTML')
# 导入 ActionChains 类
from seleniumwebdriver import ActionChains
# 鼠标移动到 ac 位置
ac = driverfind_element_by_xpath('element')
ActionChains(driver)move_to_element(ac)perform()
# 在 ac 位置单击
ac = driverfind_element_by_xpath("elementA")
ActionChains(driver)move_to_element(ac)click(ac)perform()
# 在 ac 位置双击
ac = driverfind_element_by_xpath("elementB")
ActionChains(driver)move_to_element(ac)double_click(ac)perform()
# 在 ac 位置右击
ac = driverfind_element_by_xpath("elementC")
ActionChains(driver)move_to_element(ac)context_click(ac)perform()
# 在 ac 位置左键单击 hold 住
ac = driverfind_element_by_xpath('elementF')
ActionChains(driver)move_to_element(ac)click_and_hold(ac)perform()
# 将 ac1 拖拽到 ac2 位置
ac1 = driverfind_element_by_xpath('elementD')
ac2 = driverfind_element_by_xpath('elementE')
ActionChains(driver)drag_and_drop(ac1, ac2)perform()
# 导入 Select 类
from seleniumwebdriversupportui import Select
select = Select(driverfind_element_by_name('status')
selectselect_by_visible_text("审核不通过")
# 页面切换
driverswitch_towindow("window name")
# *** 作页面的前进和后退
driverforward()
driverback()
# 页面等待
## 隐式等待
driverimplicitly_wait(10)
## 显示等待
try: # 页面一直循环,直到 id="myElement" 出现
element = WebDriverWait(driver, 10)until(ECpresence_of_element_located((ByID, "myElement")))
finally:
driverquit()
以上就是关于selenium如何获取已定位元素的属性值全部的内容,包括:selenium如何获取已定位元素的属性值、自动化测试:Selenium高级 *** 作、从零开始学Python-使用Selenium抓取动态网页数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)