def click_to_rules_topmenu_item(self, driver): WebDriverWait(driver, 3).until( EC.presence_of_element_located((By.XPATH, self.xpath_locator_rules_topmenu_item))).click() return RulesPage(driver)
def extractDetails(self): yelp_name = 'none' yelp_url = '' yelp_reviews = '' yelp_friends = '' yelp_city = '' yelp_elite = '' row = self.input_data.pop() email = row[1] index = row[0] logTxt = "+-+-+-+-+-+-+-+- {0} +-+-+-+-+-+-+-+-\n".format(email) driver = self.drivers.pop() if driver is None: if platform.system() is 'Windows': driver = webdriver.Chrome(os.getcwd() + '/WebDriver/chromedriver.exe') else: driver = webdriver.Chrome(os.getcwd() + '/WebDriver/chromedriver') driver.maximize_window() driver.get(self.start_url) try: login = WebDriverWait(driver, 200).until( EC.presence_of_element_located( (By.CSS_SELECTOR, "form#ajax-login > input#email"))) password = driver.find_element_by_css_selector( 'form#ajax-login > input#password') submit_btn = driver.find_element_by_css_selector( 'form#ajax-login > button.submit') login.send_keys(self.id) time.sleep(5) password.send_keys(self.pw) time.sleep(5) submit_btn.click() logTxt = logTxt + '\tLogin Successfully!\n' usr_btn = WebDriverWait(driver, 200).until( EC.element_to_be_clickable(( By.CSS_SELECTOR, "span.icon.icon--14-triangle-down.icon--size-14.icon--inverse." "icon--fallback-inverted.u-triangle-direction-down." "user-account_button-arrow.responsive-visible-large-inline-block" ))) usr_btn.click() logTxt = logTxt + "\tClicked 'Popup' Successfully!\n" find_friends = WebDriverWait(driver, 200).until( EC.presence_of_all_elements_located( (By.CSS_SELECTOR, "ul.drop-menu-group--nav.drop-menu-group > li"))) find_friends[1].click() logTxt = logTxt + "\tClicked 'Find Friends' Successfully!\n" except: logTxt = logTxt + "\t(Warning) We can't access to first page of yelp\n" print(logTxt) driver.quit() self.drivers.append(None) return try: query = WebDriverWait(driver, 200).until( EC.presence_of_element_located( (By.XPATH, "//input[@name='query']"))) logTxt = logTxt + "\tFound 'Query Box' Successfully!\n" except: logTxt = logTxt + "\tCan't find 'Query Box' inputbox\n" print(logTxt) self.input_data.append(row) time.sleep(10) driver.refresh() self.drivers.append(driver) return try: action_chain = ActionChains(driver) action_chain.click(query).key_down(Keys.CONTROL).send_keys('a').key_up(Keys.CONTROL).send_keys(Keys.DELETE) \ .perform() query.send_keys(email) query.send_keys(Keys.ENTER) except: logTxt = logTxt + "\tCan't input email into query inputbox\n" print(logTxt) self.drivers.append(driver) return try: WebDriverWait(driver, 200).until( EC.presence_of_element_located( (By.CSS_SELECTOR, "div.section-header_block-main"))) member_row = driver.find_element_by_css_selector("div.member-row") try: yelp_name = member_row.find_element_by_id( "dropdown_user-name").text except: yelp_name = '' try: yelp_url = member_row.find_element_by_id( "dropdown_user-name").get_attribute('href') except: yelp_url = '' try: yelp_city = member_row.find_element_by_css_selector( "li.user-location.responsive-hidden-small").text except: yelp_city = '' try: yelp_friends = member_row.find_element_by_css_selector( "li.friend-count.responsive-small-display-inline-block" ).text except: yelp_friends = '' try: yelp_reviews = member_row.find_element_by_css_selector( "li.review-count.responsive-small-display-inline-block" ).text except: yelp_reviews = '' try: yelp_elite = member_row.find_element_by_css_selector( "li.is-elite.responsive-small-display-inline-block") yelp_elite = 'yes' except: yelp_elite = 'no' except: logTxt = logTxt + "\tCan't find details\n" self.cnt += 1 logTxt = logTxt + "\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + \ "\tYelp Name: {0}\n\tYelp URL: {1}\n\tYelp Reviews: {2}\n\tYelp Friends: {3}\n\tYelp City: {4}\n" \ "\tYelp Elite: {5}\n\n\tTotal Scraped: {6}\n". \ format(yelp_name, yelp_url, yelp_reviews, yelp_friends, yelp_city, yelp_elite, self.cnt) print(logTxt) #self.output_data.append([index, email, yelp_name, yelp_url, yelp_reviews, yelp_friends, yelp_city, yelp_elite]) self.drivers.append(driver) self.writer.writerow([ email, yelp_name, yelp_url, yelp_reviews, yelp_friends, yelp_city, yelp_elite ])
def wait_until(driver, timeout, by, locator): element_visible = EC.visibility_of_element_located((by, locator)) return WebDriverWait(driver, timeout).until(element_visible)
def wait_invisibility_xpath(driver, xpath, wait_timeout=None): if wait_timeout is None: wait_timeout = WAIT_TIMEOUT WebDriverWait(driver, wait_timeout).until( ec.invisibility_of_element_located((By.XPATH, xpath)))
def Log_out(self, time=100): self.driver.find_element(By.XPATH, self.Log_out_button_locator).click() return WebDriverWait(self.driver, time).until( expected_conditions.presence_of_element_located( (By.CLASS_NAME, self.login_locator)), message=f"Failed to logout via {self.login_locator}")
from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.by import By from selenium.common.exceptions import NoSuchElementException, StaleElementReferenceException from selenium.common.exceptions import WebDriverException from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC driver = webdriver.Chrome() driver.get( 'http://www.zsggzy.com/news_,11,12,22,_%D5%FE%B8%AE%B2%C9%B9%BA_1___.html') locator = ( By.XPATH, '/html/body/table/tbody/tr/td/table[2]/tbody/tr[2]/td[2]/table[1]/tbody/tr[2]/td/table/tbody/tr[1]/td/table/tbody/tr[1]/td[1]/a' ) WebDriverWait(driver, 10).until(EC.presence_of_element_located(locator)) # time.sleep(1) # val=driver.find_element_by_xpath('//*[@id="infolist"]/li[1]/div/a').text # print(val) # driver.execute_script("javascript:__doPostBack('MoreInfoList1$Pager','2')") # time.sleep(2) num = 2 # driver.get('http://www.gaztbw.gov.cn/jyxx/001001/.html') url = driver.current_url page = re.findall('_(\d+)___.html', url)[0] if int(page) != num: s = "_%d___.html" % num url = re.sub("_[0-9]+___.html", s, url) print(url)
Motivational motto: Do difficult things and get something **************************************** """ from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC driver = webdriver.Chrome() driver.maximize_window() driver.get('https://www.12306.cn/index/') js = """ var a = document.getElementById("fromStationText"); var b = document.getElementById("fromStation"); var c = document.getElementById("toStationText"); var d = document.getElementById("toStation"); var e = document.getElementById("train_date"); a.value = arguments[0]; b.value = arguments[1]; c.value = arguments[2]; d.value = arguments[3]; e.readonly = false; e.value = arguments[4]; """ driver.execute_script(js,'上海','SHH','杭州东','HGH','2019-08-07') loc_find = (By.XPATH,'//a[@id="search_one"]') WebDriverWait(driver,20).until(EC.visibility_of_element_located(loc_find)) driver.find_element(*loc_find).click()
def find(self): element = WebDriverWait(self.browser, 10).until( EC.visibility_of_element_located(locator=self.locator) ) self.web_element = element return None
def click(self): element = WebDriverWait(self.browser, 10).until( EC.element_to_be_clickable(locator=self.locator) ) element.click() return None
) # 启动浏览器并设置等待超时时间 browser = webdriver.PhantomJS( executable_path='C:\\phantomjs\\bin\\phantomjs.exe', desired_capabilities=dcap) browser.implicitly_wait(10) # 获取登录面 browser.get('https://ui.ptlogin2.qq.com/cgi-bin/login?style=8&appid=523005422&\ s_url=https%3A%2F%2Faq.qq.com%2Fcn2%2Fmobile_index&low_login=0&hln_css=\ https%3A%2F%2Faq.qq.com%2Fv2%2Fimages%2Flogo_new.png&hln_custompage=1') loginButtonLocator = (By.ID, 'go') try: WebDriverWait(browser, 10, 0.5).until( EC.visibility_of_element_located(loginButtonLocator)) except Exception: browser.close() sys.exit(-1) print "登录按钮加载成功:", time.time() # 获取用户名密码和登录元素 idTextField = browser.find_element_by_id('u') passwordTextField = browser.find_element_by_id('p') loginButton = browser.find_element_by_id('go') # 输入用户名密码并点击登录 idTextField.clear() passwordTextField.clear() idTextField.send_keys(qq)
def test_webview_simulator_native(self): self.driver.find_element_by_accessibility_id("A股开户").click() self.driver.find_element_by_accessibility_id("立即开户") WebDriverWait(self.driver, 10).until( EC.presence_of_element_located( (MobileBy.ACCESSIBILITY_ID, "立即开户")))
def verify_ok(self): WebDriverWait(self.driver, 10).until( lambda x: x.find_element(MobileBy.XPATH, "//*[@text='添加成功']")) sleep(3) return ContactListPage(self.driver)
def click_to_logo_topmenu_item(self, driver): WebDriverWait(driver, 3).until(EC.presence_of_element_located( (By.CSS_SELECTOR, "div[class='topMenu-silpoElephant topMenu-item']"))).click() return self
def click_to_my_choice_topmenu_item(self, driver): WebDriverWait(driver, 3).until( EC.presence_of_element_located((By.XPATH, self.xpath_locator_my_choise_topmenu_item))).click() return MyChoisePage(driver)
def wait_selector(self,str): WebDriverWait(self.driver, 5).until( EC.element_to_be_clickable((By.CSS_SELECTOR, str)) )
url_request = 'http://www.recreation.gov/campsiteDetails.do?siteId={site_id}&contractCode=NRSO&parkId={park_id}&arvdate=' + ARV_DATE + '&lengthOfStay=' + LENGTH_OF_STAY # Check if sites are available yet - if not refresh # Find an available site selected_site = False selected_site = checksites() # if we've got a selected_site, automate the booking process if selected_site: # Click book button driver.find_element_by_id('btnbookdates').click() # Check to see if we got an error, if so refresh WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.CSS_SELECTOR, '#contentArea'))) noerrors = checkerrors(); if (noerrors): # Enter username username_field = WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.CSS_SELECTOR, '#emailGroup input'))) username_field.send_keys(USERNAME); # Enter password password_field = driver.find_element_by_css_selector('#passwrdGroup input') password_field.send_keys(PASSWORD); # Click login button driver.find_element_by_name('submitForm').click() # Check if Primary Equipment field is readonly, if not set a value
def wait_xpath(self,str): WebDriverWait(self.driver,10).until( EC.element_to_be_clickable((By.XPATH, str)) )
driver = webdriver.Chrome() # 发送命令,访问HIS13登录页面 driver.get("http://10.16.0.78/his-common-test/#/home") # 窗口最大化 driver.maximize_window() # 点击账号输入框输入账号 driver.find_element_by_xpath('//input[@type="text"]').send_keys('9999') # 点击密码输入框输入密码 driver.find_element_by_xpath('//input[@type="password"]').send_keys('') # 点击登录 driver.find_element_by_xpath('//span[text()="登录"]').click() # # 点击取消 # driver.find_element_by_xpath('//button[@class="ivu-btn ivu-btn-primary"]//span[text()="取消"]').click() # 等待是否出现确认继续登录弹窗,若存在就点击 loc_login = (By.XPATH, '//span[text()="继续登录"]') WebDriverWait(driver, 20).until(EC.visibility_of_element_located(loc_login)) driver.find_element(*loc_login).click() # 选择住院收费处 # driver.find_element_by_xpath('//div[contains(text(),"住院收费处")]') # driver.find_element_by_xpath('//div[contains(text(),"住院收费系统")]') # loc_adress = (By.XPATH, '//div[@class="ivu-carousel-track"]//div[contains(text(),"住院收费系统")]') # 查找住院收费处 loc_adress = (By.XPATH, '//div[contains(text(),"住院收费处")]') # print(loc_adress) # 等待住院收费处元素可见 WebDriverWait(driver, 20).until(EC.visibility_of_element_located(loc_adress)) # 点击住院收费处进入下一页面 driver.find_element(*loc_adress).click() # 查找HIS13住院收费处 loc_his = (By.XPATH, '//div[text()="HIS13住院收费系统"]/parent::div[@class="bs_box"]')
def verifyLinkPresenece(self, text): wait = WebDriverWait(self.driver, 7) wait.until( expected_conditions.presence_of_element_located( (By.LINK_TEXT, text)))
from selenium.webdriver.support import expected_conditions as ec from selenium.webdriver.common.by import By from bs4 import BeautifulSoup import requests options = webdriver.ChromeOptions() # options.binary_location = 'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe' options.add_argument('headless') driver = webdriver.Chrome(chrome_options=options) driver.get('https://www.mp3juices.cc/') song_name = '夜的第7章' driver.find_element_by_xpath('//*[@id="query"]').send_keys(song_name) driver.find_element_by_xpath('//*[@id="button"]').click() try: WebDriverWait(driver, 15, 1).until(ec.presence_of_element_located((By.ID, 'result_1'))) driver.find_elements_by_link_text('Download')[0].click() WebDriverWait(driver, 15, 1).until( ec.presence_of_element_located((By.LINK_TEXT, 'Save to cloud'))) except Exception as ex: print('song not found.\n' + ex) driver.quit() exit(-1) html = driver.execute_script( "return document.documentElement.outerHTML") # 获取点击后的页面 html 源码 bs = BeautifulSoup(html, 'html.parser') download_1 = bs.find('div', {'id': 'download_1'}) mp3_url = download_1.find_all('a')[0]['href'] try:
username.send_keys('mkelleher') time.sleep(1) password = driver.find_element_by_xpath('//input[@id="login_password"]') password.clear() password.send_keys('password') time.sleep(2) submit = driver.find_element_by_xpath( '//form[@name="loginForm"]/div[@class="uk-margin-medium-top"]/button') submit.click() time.sleep(250) clients = WebDriverWait(driver, 50).until( EC.presence_of_all_elements_located(( By.XPATH, '//tr/td[@class="mat-cell cdk-column-name mat-column-name ng-star-inserted"]/div/a' ))) clients_hrefs = [] for client in clients: clients_hrefs.append(client.get_attribute('href')) with open('Client Info.csv', 'w', newline='') as f: writer = csv.writer(f) writer.writerow( ['Name', 'Client Id', 'DOB', 'Last visit', 'Images', 'PDFs', 'Notes']) for href in clients_hrefs: driver.get(href) time.sleep(30) name = WebDriverWait(driver, 50).until(
def wail_for_my_details_page_to_load(self): wait = WebDriverWait(self.driver, 30) wait = wait.until(expected_conditions.visibility_of)
def mainpage(self, time=100): self.driver.find_element(By.XPATH, self.main_page_locator).click() return WebDriverWait(self.driver, time).until( expected_conditions.visibility_of_element_located( (By.XPATH, self.main_page_element)), message=f"Main page {self.main_page_element} has not been opened")
def wait_for_click(self, locator, time=10): WebDriverWait(self._driver, time).until( expected_conditions.element_to_be_clickable(locator))
def verifyLinkPresence(self, text): element = WebDriverWait(self.driver, 10).until( EC.presence_of_element_located((By.LINK_TEXT, text)))
def wait_text(self,str): WebDriverWait(self.driver,10).until( EC.element_to_be_clickable((By.LINK_TEXT, str)) )
def find_elements(self, locator: tuple, time: int = 10): """finds elements""" return WebDriverWait(self.driver, time).until(EC.presence_of_all_elements_located(locator[:2]), message=f'Не получается найти элемент {locator[2]} ' f'на странице {self.driver.current_url}')
def wait_class_name(self,str): WebDriverWait(self.driver,10).until( EC.element_to_be_clickable((By.CLASS_NAME, str)) )
from selenium import webdriver from selenium.webdriver.common.by import By from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as ec driver = webdriver.Chrome(ChromeDriverManager().install()) driver.get("https://mail.rediff.com/cgi-bin/login.cgi") driver.find_element(By.NAME, 'proceed').click() wait = WebDriverWait(driver, 10) alert = wait.until(ec.alert_is_present()) print(alert.text) alert.accept()
def click_to_about_project_topmenu_item(self, driver): WebDriverWait(driver, 3).until( EC.presence_of_element_located((By.XPATH, self.xpath_locator_about_project_topmenu_item))).click() return AboutProjectPage(driver)