def create_webdriver(): if WEBDRIVER_TYPE == 'CHROME': return chrome.WebDriver() if WEBDRIVER_TYPE == 'REMOTE_CHROME': return remote.WebDriver(command_executor='http://selenium:4444/wd/hub', options=webdriver.ChromeOptions()) raise Exception(f"bad webdriver type {WEBDRIVER_TYPE}")
def step_impl(context): """ :type context: behave.runner.Context """ chrome_options = Options() chrome_options.add_argument('--headless') driver = webdriver.WebDriver(chrome_options=chrome_options) driver.get('http://localhost:5000/admin/') setattr(context, 'driver', driver)
def setUpClass(cls) -> None: cls.url = MAIN_URL_HOME cls.driver = webdriver.WebDriver(CHROME_DRIVER_LOCATION) cls.driver.get(cls.url) cls.driver.maximize_window() cls.driver.find_element_by_id('sign-in').click() time.sleep(DELAY_SHORT) cls.driver.find_element_by_xpath('//*[@id="sign-in"]/div[3]/a').click() time.sleep(DELAY_SHORT)
def get_chrome(): chrome_options = Options() chrome_options.binary_location = os.environ['GOOGLE_CHROME_BIN'] chrome_options.add_argument('--disable-gpu') chrome_options.add_argument('--no-sandbox') # chrome_options.add_argument('--headless') driver = webdriver.WebDriver(executable_path=os.environ['CHROMEDRIVER_PATH'], chrome_options=chrome_options) return driver
def get_firefox_driver(cls) -> FirefoxWebDriver: if cls.firefox_driver is None: firefox_options = firefoxdriver.Options() # firefox_options.add_argument("--headless") desired_capabilities = {'applicationCacheEnabled': False} cls.firefox_driver = chromedriver.WebDriver( options=firefox_options, desired_capabilities=desired_capabilities) cls.firefox_driver.implicitly_wait(10) # seconds return cls.firefox_driver
def test_search(): drw = webdriver.WebDriver( '/Users/sosninvitaliy/Desktop/google/webdriver/chromedriver') drw.get('http://www.google.ru') drw.maximize_window() element = WebDriverWait(drw, 20)\ .until(expected_conditions. presence_of_element_located((By.XPATH, '//div[@aria-label="Голосовой поиск"]/../..//input'))) element.send_keys('selenide', Keys.ENTER) element = wait_and_get_element('(//h3)[1]/..', driver=drw) str = element.get_attribute('href') if str == 'https://ru.selenide.org/': print( f'Ссылка "{str}" совпадает с ожидаемым результатом "https://ru.selenide.org/" ' ) else: pytest.fail( f'Ссылка "{str}" не совпадает с ожидаемым результатом "https://ru.selenide.org/"' ) element = drw.find_element_by_xpath( '//a[text() = "Ещё"]/ancestor::g-header-menu') element.click() element = drw.find_element_by_xpath('//a[text() = "Картинки"]') element.click() element = wait_and_get_element('//*[@id="rg_s"]/div[1]/a[2]/div[2]', driver=drw) pic = element.text.strip() i = "selenide.org" in pic if i: print( 'Изображение связано с сайтом selenide.org так как под ним содержится ссылка на сайт selenide.org' ) else: print('Изображение не связано с сайтом selenide.org') element = drw.find_element_by_xpath('//a[text() = "Все"]') element.click() element = wait_and_get_element('(//h3)[1]/..', driver=drw) con = element.get_attribute('href') if con == str: print( "Ссылки на сайт одинаковы, так как ссылка при первом шаге равна ссылке при третьем шаге" ) else: print("Ссылки не одинаковы")
def setUpClass(cls): chrome_options = Options() chrome_options.add_argument('--headless') # Following two lines needed to fix "selenium.common.exceptions.WebDriverException: Message: unknown error: # Chrome failed to start: crashed" in Travis CI chrome_options.add_argument('--window-size=1024,768') chrome_options.add_argument('--no-sandbox') chrome_options.add_argument('--log-level=3') cls.selenium = webdriver.WebDriver( executable_path=chromedriver_binary.chromedriver_filename, chrome_options=chrome_options) cls.password = random_string_generator() super(CreatePostIntegrationTest, cls).setUpClass()
def test_clicking(self): cmd = "cd ../EDA_miner && python app.py" # Thanks: https://stackoverflow.com/a/4791612/6655150 pro = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True, preexec_fn=os.setsid) # Wait till the server boots up time.sleep(10) chromedriver = os.environ["CHROMEDRIVER"] # Make sure the window is maximized and start a webdriver chrome_options = options.Options() chrome_options.add_argument('--headless') chrome_options.add_argument('--disable-gpu') chrome_options.add_argument('--window-size=1420,1080') chrome_options.add_argument('--no-sandbox') chrome = webdriver.WebDriver(chromedriver, options=chrome_options) # Navigate to the page chrome.get("http://127.0.0.1:8050") time.sleep(2) # Get and iterate over the high-level and low-level tabs high_level_tabs = chrome.find_elements_by_class_name("nav_links") for hlt in high_level_tabs: hlt.click() time.sleep(1) low_level_tab_menu = chrome.find_element_by_id("selected_subpage") low_level_tabs = low_level_tab_menu.find_elements_by_class_name( "tab") for llt in low_level_tabs: print(llt.text) llt.click() time.sleep(1) # re-run after checking the last element, # because that might have broken the page llt.click() time.sleep(1) # Close the webdriver chrome.quit() # kill the server # TODO: Does this indeed kill the server? os.killpg(os.getpgid(pro.pid), signal.SIGTERM)
def initialize_webdriver(url): options = Options() # options.add_argument('--headless') options.add_argument('--disable-gpu') chrome_driver = webdriver.WebDriver(executable_path=EXECUTABLE_PATH, chrome_options=options) chrome_driver.get(url) time.sleep(4) button = chrome_driver.find_element_by_xpath("//*[@id=\"fc\"]/div[1]/div[1]/div[1]/button[1]/span") time.sleep(2) button.click() time.sleep(2) button.click() chrome_driver.set_window_size(1200, 1080) return chrome_driver
def setup_class(cls): # Start the server and wait till is loads cmd = "cd ../EDA_miner && gunicorn wsgi:application" cls.server = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True, preexec_fn=os.setsid) time.sleep(7) # Start a webdriver chrome_options = options.Options() chrome_options.add_argument('--headless') chrome_options.add_argument('--disable-gpu') chrome_options.add_argument('--no-sandbox') cls.chrome = webdriver.WebDriver(chromedriver, options=chrome_options)
def tor_driver() -> 'WebDriver': """Tor (``.onion``) driver. Returns: selenium.webdriver.chrome.webdriver.WebDriver: The web driver object with Tor proxy settings. See Also: * :func:`darc.selenium.get_options` * :func:`darc.selenium.get_capabilities` """ options = get_options('tor') capabilities = get_capabilities('tor') # initiate driver driver = selenium_webdriver.WebDriver(options=options, desired_capabilities=capabilities) return driver
def null_driver() -> 'WebDriver': """No proxy driver. Returns: selenium.webdriver.chrome.webdriver.WebDriver: The web driver object with no proxy settings. See Also: * :func:`darc.selenium.get_options` * :func:`darc.selenium.get_capabilities` """ options = get_options('null') capabilities = get_capabilities('null') # initiate driver driver = selenium_webdriver.WebDriver(options=options, desired_capabilities=capabilities) return driver
def test_search(): driver = webdriver.WebDriver('chromedriver.exe') driver.get("http://google.ru/") element = get_element(field_search, driver) element.click() element.send_keys('Selenide', Keys.ENTER) element = get_element(first_result, driver) checklink = element.get_attribute('href') assert "https://ru.selenide.org/" in checklink element = get_element(text_more, driver) element.click() element = get_element(pictures, driver) element.click() print(2) element = get_element(first_picture_site, driver) checkpicture = element.text.strip() assert "selenide.org" in checkpicture driver.back() element = get_element(first_result_after_back, driver) checkfirstlinkagain = element.get_attribute('href') assert checkfirstlinkagain in checklink
def test_search(): driver = webdriver.WebDriver('chromedriver.exe') driver.get("http://google.ru/") element = get_element(field_search, driver) element.click() element.send_keys('Selenide', Keys.ENTER) element = get_element(first_result, driver) checklink = element.get_attribute('href') if checklink == 'https://ru.selenide.org/': print('Первая ссылка совпадает с "https://ru.selenide.org!"') else: pytest.fail(f'Link"{checklink}" not equal "https://ru.selenide.org/') element = get_element(text_more, driver) element.click() element = get_element(pictures, driver) element.click() element = get_element(first_picture, driver) checkpicture = element.get_attribute('alt') i = "Selenide" in checkpicture if i: print("Соотносится с Selenide") else: print("Не соотносится с Selenide") element = get_element(first_picture_site, driver) checkpicture = element.text.strip() i = "selenide.org" in checkpicture if i: print('Соотносится с сайтом "selenide.org"') else: print('Не соотносится с сайтом "selenide.org"') driver.back() element = get_element(first_result_after_back, driver) checkfirstlinkagain = element.get_attribute('href') if checkfirstlinkagain == checklink: print('Совпадают ссылки после возврата на основную страницу') else: pytest.fail( f'Link"{checkfirstlinkagain}" not equal "https://ru.selenide.org/')
def set_driver(path, args): if args.browser.lower() == 'chrome': try: print("Chrome Driver") option = CHop() option.add_argument(('--none', '--headless')[not args.use_gui]) return CHdr.WebDriver(executable_path=path, options=option) except SessionNotCreatedException: _exception_print('Chrome', 'ChromeDriver', 'https://chromedriver.chromium.org/downloads') elif args.browser.lower() == 'firefox': try: print("Gecko Driver") option = FFop() option.add_argument(('-none', '-headless')[not args.use_gui]) return FFdr.WebDriver(executable_path=path, options=option) except SessionNotCreatedException: _exception_print( 'Firefox', 'GeckoDriver', 'https://github.com/mozilla/geckodriver/releases') else: raise InvalidBrowserException("No Appropriate webdriver found!")
def crawl(self, url): print '# begin crawl #' browser = webdriver.WebDriver() browser.get(url) jd_input = browser.find_element_by_id('key') jd_input.send_keys('手机'.decode('utf-8')) jd_input.send_keys(Keys.ENTER) time.sleep(5) page = int( browser.find_element_by_class_name( 'p-skip').find_element_by_css_selector('b').text) phone_model = list() evaluation_number = list() price = list() merchant = list() i = 0 while i < page: print i time.sleep(3) html = self.downloader.download(browser) phone_model_temp, evaluation_number_temp, price_temp, merchant_temp = self.parser.parse( html) phone_model += phone_model_temp evaluation_number += evaluation_number_temp price += price_temp merchant += merchant_temp print len(phone_model) print len(evaluation_number) print len(price) print len(merchant) next_page = browser.find_element_by_class_name('pn-next') next_page.click() i += 1 self.outputer.collect_data(phone_model, evaluation_number, price, merchant) browser.close()
def test(self): h = webdriver.WebDriver() def wait(): return WebDriverWait(h, 10) h.get(self.live_server_url + '/admin/login/?next=/flight/1/') wait().until(EC.presence_of_element_located((By.ID, 'id_username'))) wait().until(EC.presence_of_element_located((By.ID, 'id_password'))) wait().until(EC.presence_of_element_located((By.CSS_SELECTOR, 'input[type="submit"]'))) h.find_element_by_css_selector('#id_username').send_keys(self.username) h.find_element_by_css_selector('#id_password').send_keys(self.password) h.find_element_by_css_selector('input[type="submit"]').click() wait().until(EC.presence_of_element_located((By.NAME, 'number_of_seats'))) wait().until(EC.presence_of_element_located((By.NAME, 'passenger'))) wait().until(EC.presence_of_element_located((By.CSS_SELECTOR, 'input[type="submit"]'))) h.find_element_by_name('number_of_seats').send_keys("1") h.find_element_by_name('passenger').send_keys("User Userski") h.find_element_by_css_selector('input[type="submit"]').click() wait().until(EC.presence_of_element_located((By.XPATH, "//li[text()='User Userski']"))) h.close()
def test_search(): driver = webdriver.WebDriver('D:\PyCharmProjects\SAP_SF\chromedriver.exe') driver.implicitly_wait(60) driver.get("http://google.ru/") element = wait_and_get_element(driver, "field_search") element.click() element.send_keys('Selenide', Keys.ENTER) element = wait_and_get_element(driver, "first_result") checklink = element.get_attribute('href') assert "https://ru.selenide.org/" in checklink print(checklink + " first result is correct") element = wait_and_get_element(driver, "text_more") element.click() element = wait_and_get_element(driver, "pictures") element.click() element = wait_and_get_element(driver, "first_picture_site") checkpicture = element.text.strip() assert "selenide.org" in checkpicture print("First picture is corresponded to Selenide website") driver.back() element = wait_and_get_element(driver, "first_result_after_back") checkfirstlinkagain = element.get_attribute('href') assert checkfirstlinkagain in checklink
def __init__(self, contact): chrome_options = Options() chrome_options.add_argument("--disable-gpu") chrome_options.add_argument("start-maximized") chrome_options.add_argument("disable-infobars") chrome_options.add_argument("--disable-extensions") chrome_options.add_argument("--disable-dev-shm-usage") chrome_options.add_argument("--no-sandbox") exe_path = os.path.join(BASE_PATH, 'chromedriver.exe') chromedrvr_path = os.path.join( os.path.dirname(os.path.abspath("__file__")), exe_path) self.wd = webdriver.WebDriver(chromedrvr_path, options=chrome_options) self.wd.implicitly_wait(300) print("Navigating to chrome") self.wd.get("https://web.whatsapp.com/") print("Waiting for page to load") search_bar = self.wd.find_element_by_xpath( '//*[@id="side"]//div[contains(text(), "Search or start new chat")]/following::label//div[@contenteditable]' ) search_bar.send_keys(contact) self.wd.implicitly_wait(10) group = self.wd.find_element_by_xpath('//span[@title="%s"]' % contact) group.click()
def before_all(context): path = ('{}/chromedriver'.format(getcwd())) context.driver = webdriver.WebDriver(executable_path=path)
def setUpClass(cls) -> None: cls.url = MAIN_URL_HOME cls.driver = webdriver.WebDriver(CHROME_DRIVER_LOCATION) cls.driver.get(cls.url) time.sleep(DELAY_SHORT) cls.driver.maximize_window()
elif plat_info.startswith("Windows"): driver_path = "chromedrivers/chromedriver_win32/chromedriver.exe" else: raise Exception(f"不支持平台: {plat_info}") return driver_path if __name__ == "__main__": args = make_args() configs_path = args.configs driver_path = get_driver_path() driver = webdriver.WebDriver(executable_path=driver_path) # driver.implicitly_wait(60) # 逐个填写 for path in configs_path: config = json.load(open(path, "r", encoding="utf-8")) config_check(config) get_in_page(driver, config) write_info(driver, config) submit(driver, config) get_in_history(driver) save_screen_shot(driver) logout(driver) if config["微信通知key"]: wechat_notification(userName=config["学号"], sckey=config["微信通知key"],
import io from PIL import Image from selenium.webdriver.chrome import webdriver def get_concat_v(im1, im2): dst = Image.new('RGB', (im1.width, im1.height + im2.height)) dst.paste(im1, (0, 0)) dst.paste(im2, (0, im1.height)) return dst if __name__ == '__main__': driver = webdriver.WebDriver('resources/chromedriver.exe') driver.maximize_window() driver.get('https://chromedriver.chromium.org/capabilities') slices = [] scroll_height = driver.execute_script('return document.body.scrollHeight') size = driver.get_window_size() current_height = 0 window_height = size['height'] slices.append(driver.get_screenshot_as_png()) current_height += window_height while current_height + window_height < scroll_height: driver.execute_script(f'window.scrollTo(0, {current_height + 1})') slices.append(driver.get_screenshot_as_png()) current_height += window_height remaining_height = scroll_height - current_height
def __init__(self): self.driver = webdriver.WebDriver() self.driver.maximize_window()
def setUpClass(cls) -> None: cls.url = PUBLIC_PROFILE cls.driver = webdriver.WebDriver(CHROME_DRIVER_LOCATION) cls.driver.get(cls.url) cls.driver.maximize_window() time.sleep(DELAY_SHORT)
def from_crawler(cls, crawler): # This method is used by Scrapy to create your spiders. s = cls() s.driver = webdriver.WebDriver(executable_path="chromedriver.exe") crawler.signals.connect(s.spider_opened, signal=signals.spider_opened) return s
def test(self): self.driver = webdriver.WebDriver() self.driver.get("http://www.baidu.com") self.driver.implicitly_wait(3) self.driver.maximize_window()
def get_driver() -> webdriver.WebDriver: if browser().lower() == 'chrome': driver = 'chromedriver' else: raise NotImplemented(f'Browser {browser} not supported.') return webdriver.WebDriver(executable_path=f'../drivers/{driver}')
# -*- coding: utf-8 -*- from selenium import * from selenium.webdriver.chrome.options import Options from selenium.webdriver.chrome import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.support import expected_conditions as EC from time import sleep import json from selenium.webdriver.support.wait import WebDriverWait driver = webdriver.WebDriver("./chromedriver") class scarpping(object): def waitforelement(self, findwhat, value): wait = WebDriverWait(driver, 120) if findwhat == "id": lookfor = driver.find_element_by_id(str(value)) element = wait.until(EC.visibility_of(lookfor)) if findwhat == "class": lookfor = driver.find_element_by_class_name(str(value)) element = wait.until(EC.visibility_of(lookfor)) if findwhat == "css": lookfor = driver.find_element_by_css_selector( By.CSS_SELECTOR, str(value)) element = wait.until(EC.visibility_of(lookfor)) def initbrowser(self):
def setUpClass(cls): cls.selenium = webdriver.WebDriver() super(BasicTestWithSelenium, cls).setUpClass()