class SawFirst: def __init__(self, url): self.driver = Edge(executable_path=PATH) self.driver.get(url) def _get_links(self, s): links = self.driver.find_elements_by_xpath('//a') sorted_links = [link for link in links if link.text.find(s, 0) != -1] return sorted_links def go_to_page(self, s): # for link in self._get_links(s): # link.click() link = self._get_links(s)[0] link.click() time.sleep(2) try: gallery = self.driver.find_element_by_id('gallery-1') image_links = gallery.find_elements_by_tag_name('a') except Exception: pass else: time.sleep(1) image_links[0].click() ui.WebDriverWait(self.driver, 3000).until( expected_conditions.element_to_be_clickable( (By.CLASS_NAME, 'featured-image2'))) self.driver.find_element_by_class_name('featured-image2')
class SeleniumRuntime: """ This class works like a singleton containing a single instance of the browser environment Attributes: logger: logger instance gathered from logging module, acts like a singleton """ def __init__(self): self.logger = logging.getLogger(LOGGER_INSTANCE) if TARGET_BROWSER == 'chrome': self.browser = Chrome() elif TARGET_BROWSER == 'firefox': self.browser = Firefox() elif TARGET_BROWSER == 'edge': self.browser = Edge() def go_to_page(self, url): self.browser.get(url) def submit_form(self): form = self.browser.find_element_by_tag_name('form') form.submit() def fill_form(self, table): for field, value in table.items(): element = self.browser.find_element_by_id(field) element.clear() element.send_keys(value) def fill_selects(self, table): for field_name, field_value in table.items(): self.wait_for_element(field_value, By.XPATH).click() def click(self, value, by=By.ID): element = self.browser.find_element(by, value) element.click() def get_element(self, value, by=By.ID): return self.browser.find_element(by, value) def get_elements(self, value, by=By.ID): return self.browser.find_elements(by, value) def assert_presence(self, value, by=By.ID): try: self.browser.find_element(by, value) return True except NoSuchElementException: return False def back(self): self.browser.back() def forward(self): self.browser.forward() def refresh(self): self.browser.refresh() def current_title(self): return self.browser.title def current_url(self): return self.browser.current_url def wait_for_element(self, value, by=By.ID, timeout=30): return WebDriverWait(self.browser, timeout).until( expected_conditions.presence_of_element_located((by, value))) def wait_for_redirect(self, target_url, timeout=30): return WebDriverWait(self.browser, timeout).until( expected_conditions.url_to_be(target_url)) @staticmethod def assert_class(element, class_name): class_attr = element.get_attribute('class') return class_attr.find(class_name) >= 0 @staticmethod def assert_attribute(element, attribute_name, attribute_value): attr_value = element.get_attribute(attribute_name) return attr_value.find(attribute_value) >= 0
import shutil # Open Edge instance for navigation ref_time = time.time() # driver = Edge(executable_path=r"C:\Users\Eric\Desktop\Coding Stuff\SD_Code\SD_Auto_Driver_Install\edgedriver_win64\msedgedriver.exe") driver = Edge(executable_path=r"edgedriver_win64\msedgedriver.exe") # Navigate to specified website driver.get("https://www.nvidia.com/Download/index.aspx?lang=en-in") time.sleep(5) #This block of code sets all the dropdown menus to the correct selections #============================================================================================== # Store product type drop down menu as object and Select GeForce from dropdown menu product_type_selector = Select( driver.find_element_by_id('selProductSeriesType')) product_type_selector.select_by_value('1') product_series_selector = Select(driver.find_element_by_id('selProductSeries')) product_series_selector.select_by_visible_text('GeForce RTX 30 Series') download_type_selector = Select( driver.find_element_by_id('ddlDownloadTypeCrdGrd')) download_type_selector.select_by_visible_text('Game Ready Driver (GRD)') download_language_selector = Select(driver.find_element_by_id('ddlLanguage')) download_language_selector.select_by_value('1') # Clicks button to search for driver search_button = driver.find_element_by_xpath( "//a[@href='javascript: GetDriver();']")