selenium元素定位,鼠标悬浮,窗口切换等...新手小白实战自测

测试网站:https://www.xiachufang.com/

下厨房:

测试搜索框

from selenium import webdriver
from time import sleep
driver = webdriver.Chrome()
driver.get("https://www.xiachufang.com/")
# 1.模拟点击搜索框√
driver.find_element_by_class_name("twitter-typeahead").click()
# 2.模拟输入"螺蛳粉"
driver.find_element_by_xpath('/html/body/div[2]/div/div/div/div[2]/div[1]/form/span/input[2]').send_keys("螺蛳粉")
# 3.模拟点击搜菜谱按钮
driver.find_element_by_xpath('/html/body/div[2]/div/div/div/div[2]/div[1]/form/input[2]').click()
sleep(2)
driver.quit()

注意:   1.这里第一步是整个框,第二步是被整个框包含的文字框,不一样哦!
        2.send_keys里面必须是双引号哦!

测试图片:

from selenium import webdriver
from time import sleep

driver = webdriver.Chrome()
driver.get("https://www.xiachufang.com/")
# 模拟点击"新秀菜谱"的第二张图片(每次刷新不一样)√
driver.find_element_by_xpath('/html/body/div[3]/div/div/div[1]/div[1]/div[2]/div[2]/div[2]/ul/li[1]/ul/li[2]/div/a/img').click()

# 模拟点击"流行菜单"的"麦格婆婆麦"图片√
driver.find_element_by_xpath('/html/body/div[3]/div/div/div[2]/div[4]/div/div[2]/a[1]/img').click()

测试页面上一些按钮:

1.测试一下这个翻页的按钮:

from selenium import webdriver
from time import sleep

driver = webdriver.Chrome()
driver.get("https://www.xiachufang.com/")
# 模拟点击">"三次,再点击"<"一次 √
driver.find_element_by_xpath('/html/body/div[3]/div/div/div[1]/div[1]/div[2]/div[2]/div[1]/div[2]/a[2]').click()
sleep(2)
driver.find_element_by_xpath('/html/body/div[3]/div/div/div[1]/div[1]/div[2]/div[2]/div[1]/div[2]/a[2]').click()
sleep(2)
driver.find_element_by_xpath('/html/body/div[3]/div/div/div[1]/div[1]/div[2]/div[2]/div[1]/div[2]/a[2]').click()
sleep(2)
driver.find_element_by_xpath('/html/body/div[3]/div/div/div[1]/div[1]/div[2]/div[2]/div[1]/div[2]/a[1]').click()
2.测试点击轮播图下面的第四个空心小圆圈:

# 模拟点击轮播图下面的第四个空心小圆圈  √
driver.find_element_by_xpath('/html/body/div[3]/div/div/div[1]/div[1]/div[2]/div[1]/div/ol/li[4]').click()
sleep(2)
driver.quit()
3.测试点击"下厨房的厨友们"的关注(这个也是会刷新的):

driver.find_element_by_xpath('/html/body/div[3]/div/div/div[2]/div[5]/div/div[2]/ul/li[1]/div/div[3]/a').click()

4.测试点击底下的"联系我们"

driver.find_element_by_xpath('/html/body/div[5]/div/div[1]/a').click()

5.测试滑到底下时,点击右下角的置顶按钮

# 模拟鼠标滚轮,滑动至页面底部 √
js = "window.scrollTo(0, document.body.scrollHeight)"
driver.execute_script(js)
sleep(2)
# 点击右下角的置顶按钮
driver.find_element_by_xpath('//*[@id="scrollTop"]').click()
sleep(2)

鼠标悬浮:

from selenium import webdriver
from time import sleep
from selenium.webdriver import ActionChains

driver = webdriver.Chrome()
driver.get("https://www.xiachufang.com/")
# 测试鼠标悬浮
# 案例1:
# 1.模拟鼠标停在右侧栏"肉"上√
ele1 = driver.find_element_by_xpath('/html/body/div[3]/div/div/div[1]/div[1]/div[1]/ul/li[5]/a/span')
ActionChains(driver).move_to_element(ele1).perform()
sleep(2)
2.1点击弹出的隐藏框里面的"猪肉"√
driver.find_element_by_xpath('/html/body/div[3]/div/div/div[1]/div[1]/div[1]/ul/li[5]/div/div[1]/div[1]/a').click()
# 2.2再试试点击弹出的隐藏框里面的"鸡腿"√
# driver.find_element_by_xpath('/html/body/div[3]/div/div/div[1]/div[1]/div[1]/ul/li[5]/div/div[2]/div[2]/span[1]/a').click()
# 2.3再试试点击弹出的隐藏框里面的"牛腩"√
# driver.find_element_by_xpath('/html/body/div[3]/div/div/div[1]/div[1]/div[1]/ul/li[5]/div/div[3]/div[2]/span[1]/a').click()
# sleep(2)

# 案例2:
# 1.模拟鼠标停在上栏的"菜谱分类"上√
ele2 = driver.find_element_by_xpath('/html/body/div[2]/div/div/div/div[2]/div[2]/ul/li[2]/a/span')
ActionChains(driver).move_to_element(ele2).perform()
# 2.点击弹出的隐藏框里面的"烘焙"
driver.find_element_by_xpath('/html/body/div[2]/div/div/div/div[2]/div[2]/ul/li[2]/div/div/ul[1]/li[8]/a').click()
sleep(2)

# 案例3:
# 1.模拟鼠标停在右侧栏的"蔬菜"上√
ele3 = driver.find_element_by_xpath('/html/body/div[3]/div/div/div[1]/div[1]/div[1]/ul/li[7]/a/span')
ActionChains(driver).move_to_element(ele3).perform()
sleep(2)
# 2.1点击弹出的隐藏框里面的"茄子"√
driver.find_element_by_xpath('/html/body/div[3]/div/div/div[1]/div[1]/div[1]/ul/li[7]/div/div[1]/div[1]/a').click()
# 2.2点击弹出的隐藏框里面的"土豆"√
# driver.find_element_by_xpath('/html/body/div[3]/div/div/div[1]/div[1]/div[1]/ul/li[7]/div/div[2]/div[2]/span[1]/a').click()
# 2.3点击弹出的隐藏框里面的"香菇"√
# driver.find_element_by_xpath('/html/body/div[3]/div/div/div[1]/div[1]/div[1]/ul/li[7]/div/div[3]/div[2]/span[1]/a').click()
sleep(2)

记录:我的思考:试了很多次土豆都不成功!!在第一步跟第二步结束都sleep(2)一下就成功了!

窗口切换 :

from selenium import webdriver
from time import sleep

driver = webdriver.Chrome()
driver.get("https://www.xiachufang.com/")

# 模拟点击搜索框√
driver.find_element_by_class_name("twitter-typeahead").click()
# 模拟输入"红烧肉"
driver.find_element_by_xpath('/html/body/div[2]/div/div/div/div[2]/div[1]/form/span/input[2]').send_keys("红烧肉")
# 模拟点击搜菜谱按钮
driver.find_element_by_xpath('/html/body/div[2]/div/div/div/div[2]/div[1]/form/input[2]').click()
sleep(2)
# 窗口切换-点击标题√
# (这里的xpath是标题"不焯水不放油的家常红烧肉"的a标签)
driver.find_element_by_xpath('//li/div/a').click()
# 输出看一下窗口切换后(即点击完标题后)的窗口url
print(driver.current_url)
window_handles = driver.window_handles
# 跳转到第二个页面(从0开始)
driver.switch_to.window(window_handles[1])
# 输出看一下跳转到第二个页面后的窗口url
print(driver.current_url)
# 点击收藏
driver.find_element_by_xpath('/html/body/div[3]/div/div/div[1]/div[1]/div/div[2]/div[2]/a').click()
# 看看收藏界面的url
print(driver.current_url)
# 输出看一下有几个窗口?即标签卡
print(len(window_handles))
sleep(3)
driver.quit()

测试登录:

from selenium import webdriver
from time import sleep
from selenium.webdriver import ActionChains

driver = webdriver.Chrome()
driver.get("https://www.xiachufang.com/")
# 1.点击登录 √
driver.find_element_by_xpath('/html/body/div[2]/div/div/div/div[2]/div[3]/div/a[1]').click()
sleep(2)
# 2.输入手机号:
driver.find_element_by_class_name("tel").send_keys("18xxx")
sleep(2)
# 3.滑动验证(滑动成功,但显示失效要刷新)×
# 3.1选择拖动滑块的节点
sli_ele = driver.find_element_by_id("nc_1_n1z")
# 3.2------------鼠标滑动操作------------
action = ActionChains(driver)
# 第一步:在滑块处按住鼠标左键
action.click_and_hold(sli_ele)
# 第二步:相对鼠标当前位置进行右移动(可以知道整个框长是300,减去节点就是需要滑动的距离)
action.move_by_offset(260,0)
# 第三步:释放鼠标
action.release()
# 执行动作
action.perform()
# 4.点击"记住我"的勾选框(这里默认是勾上的,所以这里测试是把√取消了)√
# driver.find_element_by_id("remember").click()
# # 5.点击"我已阅读..."的勾选框√
# driver.find_element_by_id("regagreement").click()

================================================================

博客园

测试网站(注册界面):https://account.cnblogs.com/signup

PS:一开始选择博客园的网站:

driver.get("https://www.cnblogs.com/")
# 而且模拟点击"注册"(这里我复制完整xpath才成功!!!)
driver.find_element_by_xpath('/html/body/div/div[1]/nav[1]/ul[2]/li[2]/a[5]').click()

但是后面发现总是不稳定,有时候可以进入注册页面,有时候不行!!不懂什么原因! 所性直接url为注册界面了,跳过这一步!

测试注册 

 

代码如下:

from selenium import webdriver
from time import sleep
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()
driver.get("https://account.cnblogs.com/signup")

# 2.获取邮箱ID √
mailbox = driver.find_element_by_id("mat-input-0")
# 3.为邮箱value属性赋值 √
mailbox.send_keys("xxx@qq.com")
# 4.获取手机号ID√
phone = driver.find_element_by_id("mat-input-2")
# 5.为手机号value属性赋值√
phone.send_keys('18xxx')
# 6.填写昵称√
driver.find_element_by_id("mat-input-3").send_keys("island00")
sleep(2)
# 7.填写密码√
driver.find_element_by_id("mat-input-4").send_keys("12345678")
sleep(2)
# 8.填写确认密码√
driver.find_element_by_id("mat-input-5").send_keys("12345678")
sleep(2)
# 9.点击注册按钮√
driver.find_element_by_class_name("mat-button-wrapper").click()
sleep(5)
# 10.点击智能验证按钮×(点不了!!定位不到!!)
driver.find_element_by_class_name("sm-ico").submit()
driver.quit()

键盘操作:

# 获取输入框√
search_input = driver.find_element_by_id("mat-input-3")
# 向输入框输入文字√
search_input.send_keys("小岛的")
sleep(2)
# 用退格键删除最后一个字符√
search_input.send_keys(Keys.BACK_SPACE)
sleep(2)
# 全选输入框文字√
search_input.send_keys(Keys.CONTROL,'a')
sleep(2)
# 剪切√
search_input.send_keys(Keys.CONTROL,'x')
sleep(2)
# 复制√
search_input.send_keys(Keys.CONTROL,'v')

测试登录:

from selenium import webdriver
from time import sleep

driver = webdriver.Chrome()
driver.get("https://account.cnblogs.com/signin?returnUrl=https:%2F%2Fwww.cnblogs.com%2F")
# 1.输入邮箱√
driver.find_element_by_id("mat-input-0").send_keys("xxx@qq.com")
# 2.输入密码√
driver.find_element_by_id("mat-input-1").send_keys("12345678")
# 3.点击登录按钮√
driver.find_element_by_class_name("mat-button-wrapper").click()
sleep(3)
# 4.点击智能验证按钮(这里是整个框的ID,显示失败要刷新)×
driver.find_element_by_id("SM_BTN_1").click()

总结一下:在测试博客园的登录与注册功能时,到最后一步的智能验证按钮都不能成功!

定位了很多次!整个框,文字部分,按钮部分......没有准确的定位到....也搜了很多元素定位失败原因,目前还不能解决T T先不死犟了.....

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值