1.驱动
driver = webdriver.Firefox()
F需要大写
2.设置控件属性:
js查找元素
带不带s
js = 'document.getElementById("loginWrap").className="showtab2"'
getElement 带s 时是列表
3.元素赋值
js = 'document.getElementById("loginWrap").className="showtab2"'
class 找不到,必须为 className
4.页面跳转后定位不到元素 ==等待时间不够
5.定位到元素后,提示:element is not reachable by keyboard 无法键盘操作该元素
解决方案:找到元素后,点击激活,然后输入对应参数
element = driver.find_element_by_css_selector('#searchDiv > div:nth-child(1) > span')
element.click()
time.sleep(1)
driver.switch_to.active_element.send_keys('admin')
6.设置火狐浏览器不弹框提醒
profile = webdriver.FirefoxProfile()
profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream")
driver = webdriver.Firefox(profile)
代码实现:
class Login: def __init__(self, host_pd): self.host_pd = host_pd def __login__(self): # 火狐浏览器设置不弹框提醒 profile = webdriver.FirefoxProfile() profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream") driver = webdriver.Firefox(profile) # 获取生产相关参数 # 实例化configParser对象 config = configparser.ConfigParser() # 当前文件夹的父文件夹,并用‘/’分隔 pathlsit = os.path.dirname(os.path.dirname(__file__)).split('/') # 获取配置对应文件的具体位置 pathstr = '\\'.join(pathlsit) + '\\Config\\myapp.ini' # print(pathstr) # -read读取ini文件 config.read(pathstr, encoding='utf-8') # 获取相关参数 self.url = config.get(self.host_pd, 'url') self.username = config.get(self.host_pd, 'username') self.passwd = config.get(self.host_pd, 'passwd') self.road = config.get('download_road', 'road') # print(self.road) # print(self.road.strip("'") + 'imgcode.png') # 访问网址 driver.get(self.url) time.sleep(0.5) js = 'document.getElementById("loginWrap").className="showtab2"' driver.execute_script(js) time.sleep(0.5) # 输入账号 driver.find_element_by_id('username').send_keys(self.username) # 输入密码 driver.find_element_by_id('password').send_keys(self.passwd) # 获取校验码图片 filepath = self.road.strip("'") + 'imgcode.png' driver.find_element_by_id('imgcode').screenshot(filepath) code = verifycode(filepath) driver.find_element_by_id('verifyCode').send_keys(code) driver.find_element_by_id('verifyCode').send_keys(Keys.ENTER) time.sleep(3) os.remove(filepath) return driver