Selenium元素定位(五)

我在登录163邮箱后实现自动化发送邮件的过程中又遇到了一些问题,在此记录一下
先附上完整代码

import time

from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://mail.163.com/')
driver.maximize_window()

iframe = driver.find_element_by_tag_name('iframe')
driver.switch_to.frame(iframe)
driver.find_element_by_name('email').send_keys('lsq1176701245')
driver.find_element_by_name('password').send_keys('19980312lsq')
driver.find_element_by_id('dologin').click()
time.sleep(2)

# 发送邮件
driver.find_element_by_xpath('/html/body/div[1]/nav/div[1]/ul/li[2]').click()
time.sleep(2)
driver.find_element_by_class_name('nui-editableAddr-ipt').send_keys('1176701245@qq.com')
driver.find_elements_by_class_name('nui-ipt-input')[2].send_keys('test_title')

i_frame  = driver.find_element_by_class_name('APP-editor-iframe')
driver.switch_to.frame(i_frame)

driver.find_element_by_class_name('nui-scroll').send_keys('this is content')

driver.switch_to.default_content()
driver.find_element_by_xpath('/html/body/div[2]/div[1]/div[2]/div[1]/section/footer/div[1]/span[2]').click()

1.每个元素的定位方式都不太一样,有些元素虽然是给出了id,但这个id是随机生成的,不是固定不变的,这也就导致了定位失败,所以在定位的时候可以id,classname,xpath都试一下

2.在根据classname定位的时候,有时候一个页面内有多个元素用的同样的classname名,这可能导致定位偏差
所以可以使用写法driver.find_elements_by_class_name('nui-ipt-input')[2].send_keys('test_title')来准确定位

3.一个页面内可能有多个iframe,所以一味的使用 driver.find_element_by_tag_name('iframe')来定位可能会导致错误,可以试试使用classname来定位到具体的iframe: i_frame = driver.find_element_by_class_name('APP-editor-iframe')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LSQ的测试日记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值