Как использовать селен, чтобы открыть несколько URL-адресов из столбца в файле XLSX - PullRequest
0 голосов
/ 24 сентября 2019

Я абсолютный новичок, и у меня есть следующий сценарий: у меня есть файл Excel со столбцом, заполненным +4000 URL, каждый из которых находится в другой ячейке.URL-адрес ссылается на страницу в стиле Facebook, где пользователю будет предложено установить пароль.Мне нужно использовать Python, чтобы извлечь каждый URL из столбца, открыть его с помощью Chrome, ввести один и тот же указанный пароль для всех пользователей, а затем подтвердить его, попадает на домашнюю страницу.

Шаг за шагом:

1 Openpyxl открывает таблицу Excel.

2 Найти столбец с URL.

3 Составить список URL-адресов?

4 Получить хром, чтобы открыть первый URL-адрес.

6 Найти поле пароля.

7 Введите пароль, которыйбудет одинаковым для всех пользователей.

8 Убедитесь, что он попадает на домашнюю страницу.

9 Цикл со всеми другими URL-адресами в столбце до конца.

10 Желательно получить отчет для подтверждения количества сбоев, если таковые имеются.

Пока это мойcode:

# I can open the file
import openpyxl
wb=openpyxl.load_workbook('Test Sheet.xlsx')
type(wb)

# get the name of the sheet I need to work with
print (wb.sheetnames)

<Worksheet "Users">

# this line brings the current urls in my file 
sheet=wb['Users']
for x in range (2,4):
print(x,sheet.cell(row=x,column=3).value)

# output
2 https://firstfacebookpage.com
3 https://secondfacebookpage.com


# I found this other way to retrieve the urls from the excel spreadsheet.
ws = wb['Users']
column = ws['c']  
column_list = [column[x].value for x in range(len(column))]
print (column_list)

# output while having only 2 urls in the test sheet.
['Claim Link', 'https://somefacebookurl.com', 'https://someotherfacebookurl.com', None, None, None, 
None, None, None, None, None, None, None, None, None, None, None, None, None, None]

# This login, enter password, verify, close browser, works perfectly if I manually enter the url.
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
driver.get("https://firstfacebookpage.com")

password_box = driver.find_element_by_class_name('inputpassword') 
password_box.send_keys("theonepassword") 
print ("Password entered") 

login_box = driver.find_element_by_id('u_0_9') 
login_box.click() 

print ("Done") 
driver.close() 
print("Finished")

Теперь я не могу придумать, как сделать «driver.get» URL-адресами из электронной таблицы и повторить эти шаги входа в систему.Поскольку в моем файле будет +4000 URL в столбце, я бы предпочел, чтобы скрипт сделал это для меня.Любая помощь будет высоко ценится.

1 Ответ

0 голосов
/ 24 сентября 2019

Вы можете попробовать с пандами и xlrd,

import pandas as pd
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException



df = pd.read_excel('myurls.xlsm') # Get all the urls from the excel
mylist = df['urls'].tolist() #urls is the column name

print(mylist) # will print all the urls

# now loop through each url & perform actions.
for url in mylist:
    driver = webdriver.Chrome()
    driver.get(url)

    try:
       WebDriverWait(driver, 3).until(EC.alert_is_present(),'Timed out waiting for alert.')

       alert = driver.switch_to.alert
       alert.accept()
       print("alert accepted")
    except TimeoutException:
       print("no alert")
    password_box = driver.find_element_by_class_name('inputpassword') 
    password_box.send_keys("theonepassword") 
    print ("Password entered")
    login_box = driver.find_element_by_id('u_0_9') 
    login_box.click() 
    driver.close()


print ("Done")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...