一、今日练习:
from selenium import webdriver
import time
from selenium.webdriver.common.by import By
driver=webdriver.Chrome(r"C:\Users\墨,漓汐\Downloads\chromedriver.exe")
#隐式等待 :implicitly_wait()
driver.implicitly_wait(12)
driver.get("https://music.163.com/")
driver.maximize_window()
#driver.find_element(By.ID,"kw").send_keys("https://music.163.com/")
#time.sleep(2)
driver.find_element(By.XPATH,"//a[text()='登录']").click()
#time.sleep(2)
driver.find_element(By.XPATH,"//a[text()='选择其他登录模式']").click()
#time.sleep(3)
driver.find_element(By.ID,"j-official-terms").click()
#time.sleep(3)
driver.find_element(By.XPATH,"//a[text()='QQ登录']").click()
time.sleep(10)
#driver.set_window_position(driver.window_handles[2])
driver.find_element(By.XPATH,"//a[text()='密码登录']").click()
time.sleep(5)
1.问题描述:
原计划是要通过打开谷歌浏览器进入网易云官网,在官网页面利用Xpath定位中的文本内容匹配到“登录”,通过click()点击该按钮。还利用了ID元素定位,在最后的定位为本内容“密码登录”却未找到该元素,实现登录失败,初步分析原因是:在点击“QQ登录”按钮,当前页面进行了跳转,打开了新的网页页面,但是定位的时候,却还在以前的页面进行定位,自然而然定位失败,无法找到该元素,实行不了点击密码登录。
2.收获:在昨天的Day1基础上,新学了隐式等待和xpath文本内容定位、name定位。time.sleep()是强制等待。当使用过多的time.sleep(),会影响脚本的运行速度,于是选择隐式等待implicitly_wait(),在加载页面时自动等待,并且只需要在打开浏览器之前声明一次,减少重复代码的书写。(学习selenium的三种等待方式的链接)
xpath文本内容定位代码书写:语法://a[text()='文本内容'],标签为a文本信息为"文本内容"。
driver.find_element(By.XPATH,"//a[text()='文本内容']")
ID定位:driver.find_element(By.ID,"ID属性值")
NAME定位:driver.find_element(By.NAME,"name属性值")
class_name定位:driver.find_element(By.CLASS_NAME,"class_name属性值")
tag_name定位:driver.find_element(By.TAG_NAME,"标签名")
注:tag_name是通过标签名称来定位的,如果标签名重复,默认返回的是第一个符合的元素。
link_text元素定位:driver.find_element(By.LINK_TEXT,"a标签的全部文本内容")
注:link_text 只能使用精准的匹配。且必须根据链接上完整的文本内容去进行定位。
学习自动化测试中的元素定位可参考:学习八大元素定位资源链接
3.需要背记的代码:
from selenium import webdriver
from selenium.webdriver.common.by import By
driver.implicitly_wait(自动等待的最大化时间,单位为秒)
driver=webdriver.Chrome(“下载chromedriver.exe的存放路径”)
4.明日学习任务:
Selenium复数元素定位方法、11)Selenium之鼠标模拟操作、12)Selenium之键盘模拟操作、13)Selenium之sumbit()方法使用、15)Selenium之页面中下拉框的处理、16)Selenium之操作下拉滚动条方法、17)Selenium之窗口切换、18)Selenium之页面元素属性删除、19)Selenium之文件上传处理、20)Selenium之页面截图操作、21)Selenium之alert弹出框处理、22)unittest自动化测试框架、23)读取csv文件、24)数据驱动、25)数据断言