Как идентифицировать элемент и вызвать send_keys через Селен с Python - PullRequest
0 голосов
/ 30 апреля 2018
<img src="images/file_explorer.png" class="browse" style="cursor: pointer;height:33px;" title="file from your computer">
from selenium import webdriver
from selenium.webdriver.chrome.webdriver import WebDriver
from selenium.webdriver.common.keys import Keys

import time

driver = webdriver.Chrome(executable_path="C:/webdrivers/chromedriver.exe")
driver.maximize_window()
driver.get("https://www.collabera.com/find-a-job/search-jobs/?sort_by=dateposted&Posteddays=4000&searchany=QA&anylocation=usa")
time.sleep(3)
driver.find_element_by_css_selector("#srchpgbnnr > div:nth-child(1) > div:nth-child(1) > div > a").click()

driver.find_element_by_css_selector("body > section:nth-child(7) > div:nth-child(2) > div > div.col-md-offset-2.col-md-3.__jobdesc-sidebar.col-xs-hide > div > a").click()
time.sleep(15)
driver.find_element_by_css_selector("img.browse[src='images/file_explorer.png'][title='file from yourcomputer']").send_keys("C:\\Users\\user\\Desktop\\collebra.txt")

URL: https://www.collabera.com/find-a-job/search-jobs/job-details/126013-qa-analyst-jobs-ann-arbor-mi

мой код выше одного, он не работает как найти элемент в приведенном выше коде кнопки загрузки

Ответы [ 2 ]

0 голосов
/ 01 мая 2018
  1. Чтобы иметь возможность обрабатывать форму загрузки файла, вам нужно переключиться на iframe:

    driver.switch_to.frame(driver.find_element_by_class_name("apply-form"))
    
  2. Вам нужно обработать input элемент, но не img:

    driver.find_element_by_xpath("//input[@type='file']").send_keys("C:\\Users\\user\\Desktop\\collebra.txt")
    
0 голосов
/ 30 апреля 2018

Чтобы найти элемент и вызвать метод send_keys(), вы можете отменить time.sleep(5) и вызвать WebDriverWait и использовать любую из следующих опций:

  • CSS_SELECTOR :

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "img.browse[src='images/file_explorer.png'][title='file from your computer']"))).send_keys("C:\\Users\\user\\Desktop\\collebra.txt")
    
  • XPATH :

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//img[@class='browse' and @src='images/file_explorer.png' and @title='file from your computer']"))).send_keys("C:\\Users\\user\\Desktop\\collebra.txt")
    
...