Web自动化-元素定位作业

作业一:实现web端网易云的基于QQ登录的自动化操作

 1 from selenium import webdriver
 2 from time import sleep
 3 
 4 #获取浏览器驱动
 5 driver=webdriver.Chrome()
 6 #访问网易云网址
 7 driver.get('http://music.163.com')
 8 #浏览器设置为最大
 9 driver.maximize_window()
10 #点击登录按钮
11 driver.find_element("xpath",'//a[text()="登录"]').click()
12 #点击选择其他登录方式
13 sleep(3)
14 #点击选择其他登录模式
15 driver.find_element('xpath','//a[text()="选择其他登录模式"]').click()
16 #同意《服务条款》《隐私政策》《儿童隐私政策》
17 driver.find_element('xpath','//input[@type="checkbox"]').click()
18 #点击qq登录
19 driver.find_element('xpath','//a[text()="QQ登录"]').click()
20 
21 # 获取全部窗口的句柄handle
22 wins= driver.window_handles
23 print("所有页签handle %s" % wins)
24 #切换句柄
25 driver.switch_to.window(wins[1])
26 sleep(3)
27 #打印句柄的title
28 print(driver.title)
29 #切换iframe.先定位到iframe,再切换
30 frame=driver.find_element('xpath','//iframe[@id="ptlogin_iframe"]')
31 driver.switch_to.frame(frame)
32 
33 #定位到帐号密码登录链接
34 qqlogin=driver.find_element('xpath','//*[@id="bottom_qlogin"]/a[1]')
35 t=qqlogin.text
36 print(t)
37 #点击帐号密码登录链接
38 qqlogin.click()
39 # sleep(3)
40 #定位到用户名输入框
41 username=driver.find_element('xpath','//input[@id="u"]')
42 #定位到密码输入框
43 password=driver.find_element('xpath','//input[@id="p"]')
44 #输入用户名
45 username.send_keys('用户名')
46 #输入密码
47 password.send_keys('密码')
48 #点击授权并登陆按钮
49 login=driver.find_element('xpath','//input[@value="授权并登录"]').click()

 

句柄

1 #切换浏览器页签,可以通过切换句柄来实现
2 # 获取全部窗口的句柄handle
3 wins= driver.window_handles
4 print("所有页签handle %s" % wins)
5 #切换句柄
6 driver.switch_to.window(wins[1])
7 sleep(3)
8 #打印句柄的title
9 print(driver.title)

 

iframe

1 #定位的元素在iframe中。
2 # 切换iframe,先定位到iframe,再切换
3 frame=driver.find_element('xpath','//iframe[@id="ptlogin_iframe"]')
4 driver.switch_to.frame(frame)
5 #定位到帐号密码登录链接
6 qqlogin=driver.find_element('xpath','//*[@id="bottom_qlogin"]/a[1]')
7 t=qqlogin.text
8 print(t)

元素悬停

元素悬停:通过ActionChains模块来实现
from selenium import webdriver
from selenium.webdriver import ActionChains

driver=webdriver.Chrome()
driver.maximize_window()
driver.get('http://www.baidu.com')
el=driver.find_element_by_xpath('//span[@id="s-usersetting-top"]')
#元素悬停:通过ActionChains模块来实现
action=ActionChains(driver)
action.move_to_element(el).perform()

 元素定位中遇到的问题

1.xpath 定位一个元素后,在其所有子节点中查找定位?

使用//在所有子节点中查找。解决的问题是,有的弹出窗中需要先定位到弹出窗,然后定位到列表,最后才能定位到具体的数据。通过在浏览器上直接复制xpath的方式无法进行定位

实例://div[@id="dialogShow"]//div[@class="ag-center-cols-container"]//div[text()="erp系统"]

表示:先找到id="dialogShow",在其所有子节点中查找class="ag-center-cols-container"的元素,然后在class="ag-center-cols-container"下所有的子节点中查找text()="erp系统"。

posted on 2021-05-08 18:02  射手九个半  阅读(88)  评论(0编辑  收藏  举报

导航