Skip to content

Instantly share code, notes, and snippets.

@jounile
Created October 1, 2019 20:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jounile/d146fb7836cc92fe20b1a3f4deaeadaa to your computer and use it in GitHub Desktop.
Save jounile/d146fb7836cc92fe20b1a3f4deaeadaa to your computer and use it in GitHub Desktop.
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
import xlsxwriter
class PullRequestScraper:
def __init__(self):
self.driver = webdriver.Chrome(executable_path='~/Downloads/chromedriver_win32/chromedriver.exe')
self.wait = WebDriverWait(self.driver, 10)
def get_open(self):
self.driver.get('https://<domain>/stash/projects/<project>/repos/<repo>/pull-requests?state=OPEN')
def login(self):
assert "Log in - Bitbucket" in self.driver.title
myusername = ""
mypassword = ""
username = self.driver.find_element_by_id("j_username")
username.clear()
username.send_keys(myusername)
password = self.driver.find_element_by_name("j_password")
password.clear()
password.send_keys(mypassword)
self.driver.find_element_by_id("submit").click()
def parse_pull_requests(self, worksheet):
pull_requests_table = self.driver.find_element(By.XPATH,'//*[@id="pull-requests-content"]/div/div/table')
pull_requests_titles = pull_requests_table.find_elements(By.XPATH,'//*[@class="pull-request-title"]')
i = 0
for title in pull_requests_titles:
title = title.get_attribute('innerHTML')
# row, column, item
worksheet.write(i, 0, title)
i += 1
def quit(self):
self.driver.close()
if __name__ == '__main__':
scraper = PullRequestScraper()
workbook = xlsxwriter.Workbook('pull_requests.xlsx')
worksheet = workbook.add_worksheet("Open")
scraper.get_open()
scraper.login()
scraper.parse_pull_requests(worksheet)
workbook.close()
scraper.quit()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment