一、元素定位方法
网页元素(web element),页面显示的对象,包括按钮、文字、输入框等都称为HTML页面元素,要操作网页元素首先要找到这个元素,selenium有八大元素定位方法:

find_element_by_id 通过id定位元素,id唯一
find_element_by_xpath 通过xpath定位,相对/绝对路径
find_element_by_name 元素本身属性的名称,可能会定位到多个值,默认返回第一个值
 find_element_by_class_name 元素的css 类
 find_element_by_tag_name 标签,不推荐,重复率太高
 find_element_by_link_text 通过文本链接定位
 find_element_by_partial_link_text 通过部分文本链接定位
 find_element_by_css_selector css选择器

1、find_element_by_xpath
比较常用,用法如下,以登录我们路由器的密码输入框为例,F12或者右键-检查,定位到当前元素,右键copy-copy xpath,将拷贝的路径添加到脚本:

python网页自动化游戏框架 python网页自动化脚本_缩进

driver.find_element_by_xpath(’//*[@id=“kw”]’) # 相对路径

2、find_element_by_name/id
HTML页面:

python网页自动化游戏框架 python网页自动化脚本_等待时间_02


Selenium脚本:

driver.find_element_by_id(‘psd’).send_keys(‘admin’) # 输入登录密码admin
 driver.find_element_by_name(‘psd’).send_keys(‘admin’)

3、contains的用法

关于xpath 查找元素还可以通过contains(一个字符串查找函数)来实现,语法是

//input[contains(@id,vakue) and contains(@id,value)],此中的id和value就是定位input元素的键值对

例如:

//input[contains(@class,'textfild') and contains(@name,'pass')]

driver.findElement(By.xpath("//input[contains(@class,'textfild') and contains(@name,'pass')]")).clear();
driver.findElement(By.xpath("//input[@id='passwords' and @class='textfild required' and @type='password']")).sendKeys("123456");

二、等待处理方法
1、固定等待
time.sleep(2)
固定等待2秒,脚本调试中使用,不建议用到项目中,会影响代码执行效率;

2、隐式等待
implicitly_wait(8)
最多等待8s直到页面刷新出来,一次设置,全局生效,缺点:元素已找到,但未渲染出页面,导致找不到相应元素而出错;
3、显式等待

from selenium.webdriver.support.wait import WebDriverWait # 显示等待包
 from selenium.webdriver.support import expected_conditions as EC # 期望事件包
wait = WebDriverWait(driver, 3)
 wait.until(EC.alert_is_present())


设置显示等待时间,最长等待3s,默认0.5s轮询一次,直到出现alert弹框
注意:若显式等待和隐式等待时间均有设置,按最长的时间算;

三、鼠标键盘操作

from selenium.webdriver import ActionChains # 导入鼠标键盘事件
 from selenium.webdriver.common.keys import Keys # 键盘鼠标事件辅助类actionChains = ActionChains(driver) # 实例化
 actionChains.send_keys(Keys.ARROW_DOWN).send_keys(Keys.ENTER).perform()
 鼠标向下移动一行,点击确定,perform()方法表示执行前面一系列动作,不可少
element.send_keys(Keys.CONTROL + ‘a’) # 全选密码
time.sleep(2)
element.send_keys(Keys.BACKSPACE) # 删除密码
time.sleep(2)
element.send_keys(‘12345678’) # 修改密码


将原密码删除,并修改为新密码
其他的方法用到的时候再百度;

四、弹框处理
常见弹框:alert(提示框)、confirm(用来确认)、prompt(输入内容)
弹框的操作 :accept() 接受、dismiss() 取消、text() 显示弹框文本、send_keys() 弹框中输入内容
例如路由器本地升级页面的弹框为confirm类型:

python网页自动化游戏框架 python网页自动化脚本_python网页自动化游戏框架_03

#点击升级按钮
 driver.find_element_by_class_name(‘pcsmallbutton’).click()
 sleep(2)
 #接受confirm套框,切换到当前alert
 driver.switch_to.alert.accept()

五、PyCharm常用快捷键介绍
转换到前/后一次打开的脚本:Ctrl+Alt+左/右
注释多行:选中要注释的行,ctrl+/
段落缩进:选中要缩进的行,Tab
取消缩进:选中要缩进的行,shift+Tab