我正在寻找一个用于通过selenium python与Windows交互的类或库。 我被困在一个我通过python自动脚本将文件上传到网站的地方。
非常感谢任何帮助。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from time import sleep
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
import csv
from selenium.webdriver.common.keys import Keys
import win32com.client
#from pyrobot import robot
options = Options()
options.add_argument("--disable-infobars")
options.add_argument("--disable-extensions")
options.add_argument("--disable-notifications")
options.add_argument("--start-maximized")
options.add_argument("--disable-web-security")
options.add_argument("--no-proxy-server")
options.add_argument("--enable-automation")
options.add_argument("--disable-save-password-bubble")
options.add_experimental_option('prefs',{'credentials_enable_service':False, 'profile':{'password_manager_enabled':False}})
def url(chromepath, urlid, username, password):
driver = webdriver.Chrome(chromepath, chrome_options=options)
driver.get(urlid)
user_input = driver.find_element_by_xpath("//input[@id='userid']").send_keys(username)
user_input = driver.find_element_by_xpath("//input[@type='password']").send_keys(password)
signIn_button = driver.find_element_by_xpath("//input[@name='Submit']").click()
return driver
def element_click(xpath_click):
WebDriverWait(driver, 15).until(EC.element_to_be_clickable((By.XPATH, xpath_click)))
driver.find_element_by_xpath(xpath_click).click()
def element_visible(xpath_visible):
WebDriverWait(driver, 15).until(EC.visibility_of_element_located((By.XPATH, xpath_visible)))
driver_visible = driver.find_element_by_xpath(xpath_visible)
driver_visible.click()
return driver_visible
def element_visible_send(xpath_visible, xpath_send, xpath_click):
WebDriverWait(driver, 15).until(EC.visibility_of_element_located((By.XPATH, xpath_visible)))
driver.find_element_by_xpath(xpath_visible).send_keys(xpath_send)
driver.find_element_by_xpath(xpath_click).click()
def element_visible_iframe(xpath_visible):
WebDriverWait(driver, 15).until(EC.visibility_of_element_located((By.XPATH, xpath_visible)))
driver_visible = driver.find_element_by_xpath(xpath_visible)
#driver_visible.click()
return driver_visible
def switch_frame(xpath_iframe):
driver.switch_to_default_content()
#size = len(driver.find_elements_by_tag_name("iframe"))
WebDriverWait(driver, 15).until(EC.visibility_of_element_located((By.XPATH, xpath_iframe)))
iframe = element_visible_iframe(xpath_iframe)
driver.switch_to_frame(iframe)
chromepath = 'D:\\Selenium\\chromedriver.exe'
urlid = "URL"
username = '****'
password = '****'
driver = url(chromepath, urlid, username, password)
user_input = driver.find_element_by_xpath("//a[@id='pthnavbca_PORTAL_ROOT_OBJECT']").click()
user_input = driver.find_element_by_xpath("//a[@id='fldra_CO_EMPLOYEE_SELF_SERVICE']").click()
sleep(3)
user_input = driver.find_element_by_xpath("//a[@id='fldra_HH_FORMS']").click()
sleep(3)
element = driver.find_element_by_xpath("//a[text()='Kimpton CAR Form']")
element.location_once_scrolled_into_view
window_before = driver.window_handles[0]
print(window_before)
user_input = driver.find_element_by_xpath("//a[text()='Kimpton CAR Form']").click()
url = driver.current_url
driver.switch_to_frame('ptifrmtgtframe')
element_click("//abbr[@class='PTUNDERLINE']")
element_visible("//input[@class='PSPUSHBUTTONTBADD']")
element_visible("//input[@value='BUD']")
element_click("//img[@alt='Look up *Business Unit']")
switch_frame('//iframe[contains(@id,"ptModFrame")]')
element_visible_send("//input[@name='HHK_CARBU_DVW_BUSINESS_UNIT']", 'C4053', "//input[@value='Look Up']")
element_visible("//a[@name='RESULT0$0']")
driver.switch_to_default_content()
WebDriverWait(driver, 15).until(EC.frame_to_be_available_and_switch_to_it('ptifrmtgtframe'))
WebDriverWait(driver, 15).until(EC.visibility_of_element_located((By.XPATH, "//input[@name='HH_CAR_FORM_BUSINESS_UNIT'][@value='C4053']")))
element_visible("//img[@alt='Look up *Project']")
switch_frame('//iframe[contains(@id,"ptModFrame")]')
WebDriverWait(driver, 15).until(EC.visibility_of_element_located((By.XPATH, "//input[@name='PROJECT_PROJECT_ID']")))
driver_visible = element_visible("//input[@value='Look Up']")
print(driver_visible.get_attribute('value'))
driver_visible = element_visible("//a[@name='RESULT1$0']")
project = driver_visible.text
driver.switch_to_default_content()
WebDriverWait(driver, 15).until(EC.frame_to_be_available_and_switch_to_it('ptifrmtgtframe'))
WebDriverWait(driver, 15).until(EC.visibility_of_element_located((By.XPATH, "//input[@name = 'HH_CAR_FORM_PROJECT_ID'][@value="+project+"]")))
element_visible("//option[@value='B']")
#driver.find_element_by_xpath("//option[@value='B']").click()
#driver.find_element_by_xpath("//input[@name='HH_CAR_FRM_DTL_BUDGETED_AMT$1']").send_keys('100000')
AMT = driver.find_elements_by_xpath('//input[contains(@name,"HH_CAR_FRM_DTL_BUDGETED_AMT")]')
print(AMT)
i = 0
for a in AMT:
a.send_keys('100000')
a.send_keys(Keys.TAB)
x = "HH_CAR_FRM_DTL_HH_BASE_BUDGET_AMT$"+str(i)
WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, '//span[contains(@id,"'+x+'") and contains(text(),".")]')))
#sleep(3)
i = i + 1
driver.find_element_by_xpath("//option[@value='FFE']").click()
sleep(2)
driver.find_element_by_xpath("//option[@value='FFE']").click()