相关文章推荐
暴躁的香烟  ·  Exception encountered ...·  1 年前    · 
大鼻子的菠萝  ·  mssqlproxy:mssqlproxy是 ...·  1 年前    · 
寂寞的筷子  ·  丁鹿学堂前端路 - 知乎·  1 年前    · 
玉树临风的机器人  ·  js ...·  2 年前    · 
# 使用无界面模式 # chrome_options = webdriver.ChromeOptions() # chrome_options.add_argument('--headless') # self.brower = webdriver.Chrome(r'/home/aea/chromedriver',chrome_options=chrome_options) # 使用有界面模式 self.brower = webdriver.Chrome(r'/home/aea/chromedriver') # 使用 phantomjs # self.brower = webdriver.PhantomJS(phantomjs_path) self.username = 'your name' self.password = 'your password' def isElementExist(self,id): self.brower.find_element_by_id(id) return True except: return False def auto_run(self): print("开始自动化操作...") start_time = time.time() self.brower.get("https://services.police.govt.nz/vetting") while True: is_login = self.isElementExist('logon') if is_login: break username_input = self.brower.find_element_by_id('logon:username:input') password_input = self.brower.find_element_by_id('logon:password:input') username_input.send_keys(self.username) password_input.send_keys(self.password) self.brower.find_element_by_id('logon:logon').click() time.sleep(1) self.brower.get("https://services.police.govt.nz/vetting") while True: agencyRow_list = self.brower.find_elements_by_class_name("agencyRow") if len(agencyRow_list) != 0: break while True: Open_Agency = self.brower.find_element_by_xpath(r'//span[text()="Open Agency"]').is_displayed() if Open_Agency: time.sleep(1) break self.brower.find_element_by_xpath(r'//span[text()="Open Agency"]').click() while True: success_list = self.brower.find_elements_by_class_name("alert-success") if len(success_list) != 0: break # 先判断元素是否存在 while True: Submit_Request_list = self.brower.find_elements_by_xpath(r'//a[text()="Submit Request"]') print(Submit_Request_list) if len(Submit_Request_list) != 0: break while True: Submit_Request = self.brower.find_element_by_xpath(r'//a[text()="Submit Request"]').is_displayed() print(Submit_Request) if Submit_Request: break time.sleep(1) self.brower.find_element_by_xpath(r'//a[text()="Submit Request"]').click() # 判断id为questionsAnswers的元素是否存在 while True: is_Answers = self.isElementExist('questionsAnswers') if is_Answers: break # 判断 bodyContainer 元素是否隐藏,直到不隐藏才会继续处理 while True: is_bodyContainer = self.brower.find_element_by_id('bodyContainer').is_displayed() # print(is_bodyContainer) if is_bodyContainer: break # 判断 questionsAnswers 元素是否隐藏,直到不隐藏才会继续处理 while True: is_questionsAnswers = self.brower.find_element_by_id('questionsAnswers').is_displayed() # print(is_questionsAnswers) if is_questionsAnswers: break # 判断 predefinedRoles 元素是否隐藏,直到不隐藏才会继续处理 while True: is_predefinedRoles = self.brower.find_element_by_id('predefinedRoles').is_displayed() print(is_predefinedRoles) if is_predefinedRoles: break self.brower.find_element_by_xpath(r'//span[text()="Caregiving - children and youth"]').click() # 判断页面是否加载完毕,是否存在元素 //div[@id="question1"] 直到元素存在,开始继续往下执行 while True: question1_list = self.brower.find_elements_by_xpath(r'//div[@id="question1"]') print(question1_list) if len(question1_list) != 0: break # 当元素 //div[@id="question1"] 加载进来之后,再来判断元素是否被隐藏,如果没有继续往下执行,否则继续等待 while True: is_question1 = self.brower.find_element_by_xpath(r'//div[@id="question1"]').is_displayed() print(is_question1) if is_question1: break self.brower.find_element_by_xpath(r'//strong[text()="Yes"]').click() self.brower.find_element_by_xpath(r'//div[@id="question1"]//a[text()="NEXT "]').click() while True: is_question2 = self.brower.find_element_by_xpath(r'//div[@id="question2"]').is_displayed() print(is_question2) if is_question2: break self.brower.find_element_by_xpath(r'//strong[text()="Paid"]').click() self.brower.find_element_by_xpath(r'//div[@id="question2"]//a[text()="NEXT "]').click() while True: is_question3 = self.brower.find_element_by_xpath(r'//div[@id="question3"]').is_displayed() print(is_question3) if is_question3: break self.brower.find_element_by_xpath(r'//strong[text()="Optional Police Vet"]').click() self.brower.find_element_by_xpath(r'//div[@id="question3"]//a[text()="NEXT "]').click() time.sleep(1) print(self.brower.current_url) # 先判断最终的表单是否存在 while True: requestFormContainer_list = self.brower.find_elements_by_xpath(r'//div[@id="requestFormContainer"]') print(requestFormContainer_list) if len(requestFormContainer_list) != 0: break # 判断最终的表单 display是否为block while True: is_requestFormContainer = self.brower.find_element_by_id('requestFormContainer').is_displayed() print(is_requestFormContainer) if is_requestFormContainer: break choose_list = self.brower.find_elements_by_xpath(r'//span[text()="Choose One"]') other_list = self.brower.find_elements_by_xpath(r'//option[text()="Other"]') print(choose_list,other_list) choose_list[0].click() other_list[0].click() choose_list[1].click() other_list[1].click() self.brower.quit() print('结束,花费时间(s):',time.time() - start_time) new_driver = MyAutoDriver() new_driver.auto_run() 1、安装好你的seleniumpip install selenium2、看代码,注意我这里是一个真实项目用到的,实际过程中需要自己先定位元素from selenium import webdriverimport time, datetimeclass MyAutoDriver(object): def __init__(self): # 使用无界面模式 ... from selenium import webdriver # 打开 浏览器 browser = webdriver.Chrome() # Chrome()为Chorm 浏览器 ,Ie()为ie 浏览器 # browser.maximize_window() # 设置 浏览器 大小:全屏 browser.minimize_window() # 最小化 浏览器 ,适用Chrome,其它未测试。 browser.get("https://www.csdn.net/"
selenium + python 点击 display :none 元素 解决方法汇总 以下方法,我的问题是用第三种方法解决的,希望对你有所帮助 <div> <div class="login_btn" style="background: url("/static/images_login/btn_sig
1、对于前端隐藏 元素 ,一直是 selenium 自动化定位 元素 的隐形杀手,脚本跑到隐藏 元素 位置 报各种各样的错误,可是这种隐藏的下拉菜单又没有办法避免,所以非常头痛,此帖只为交流隐藏 元素 自动化定位处理方法; 处理一:html这种格式的:                   处理 操作 :                    from selenium impo
selenium selenium 可以模拟真实 浏览器 ,自动化测试工具,支持多种 浏览器 。结合谷歌驱动,实现爬取数据。 谷歌驱动下载地址:http://npm.taobao.org/mirrors/chromedriver/ 在谷歌 浏览器 上输入chrome://version/,可以看到自己谷歌对应的版本,并下载对应的谷歌驱动 对应版本的84.0.4147对应上即可,后面的只是这个版本修复的次数。 设置谷歌驱动参数 option = webdriver.ChromeOptions() option.add_
from selenium .webdriver.support import expected_conditions as EC def check_element_exists(driver,element,condition): if condition=='class': driver.find_element_by_class_name(element) 面试题: selenium 中隐藏 元素 如何定位?这个是很多面试官喜欢问的一个题,如果单纯的定位的话,隐藏 元素 和普通不隐藏 元素 定位没啥区别,用正常定位方法就行了 但是吧~~~很多面试官自己都搞不清楚啥叫定位,啥叫 操作 元素 (如click,clear,send_keys) 隐藏 元素 如下图有个输入框和一个登录的按钮,本来是显示的 元素 的属性隐藏和显示,主要是 type="hidden"和style=...
可以使用 selenium .webdriver提供的方法来判断 元素 是否存在,具体步骤如下: 1. 使用find_elements_by_xxx()方法查找 元素 ,如果找到了 元素 ,则返回一个列表,列表中包含所有符合条件的 元素 ;如果没有找到 元素 ,则返回一个空列表。 2. 判断返回的列表是否为空,如果为空,则说明 元素 不存在 ;如果不为空,则说明 元素 存在。 示例代码如下: ``` python from selenium import webdriver # 创建 浏览器 对象 browser = webdriver.Chrome() # 打开网页 browser.get('http://www.example.com') # 查找 元素 elements = browser.find_elements_by_xpath('//div[@class="example"]') # 判断 元素 是否存在 if elements: print(' 元素 存在') else: print(' 元素 不存在 ') # 关闭 浏览器 browser.quit()