Cách điền trường địa chỉ Email trong https://www.nike.com/register bằng Selenium và Python

Aug 18 2020

Tôi đang cố gắng sử dụng selen để điền vào biểu mẫu đăng ký trên trang web nike tại đây: https://www.nike.com/register nhưng nó không thể tìm thấy các phần tử bằng cách sử dụng xpath hoặc id.

Đây là những gì tôi đã thử cho đến nay:

chrome_options = Options()
chrome_options.add_argument("--incognito")
chrome_options.add_argument("start-maximized")
driver=webdriver.Chrome('/Users/cameron/Desktop/untitled folder/chromedriver')

driver.get('https://www.nike.com/gb/membership')
main_window = driver.current_window_handle
driver.find_element_by_xpath('//*[@id="69dcecd3-722e-42c0-aa82-358c4160ae8d"]/div/div/div[2]/a').click()

WebDriverWait(driver, 5)
driver.find_element_by_xpath('/html/body/div[2]/div[3]/div[4]/form/div[1]/input').click()

nó hoạt động tốt khi điều hướng trang web nhưng nó không thể tìm thấy các yếu tố khi cố gắng điền vào biểu mẫu đăng ký

Trả lời

DebanjanB Aug 18 2020 at 04:12

Để gửi một chuỗi ký tự đến trường địa chỉ Email, bạn phải tạo WebDriverWait cho element_to_be_clickable()và bạn có thể sử dụng một trong các Chiến lược định vị sau:

  • Sử dụng CSS_SELECTOR:

    driver.get('https://www.nike.com/gb/membership')
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a[aria-label='Join Us'][href='https://www.nike.com/register']"))).click()
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[name='emailAddress']"))).send_keys("[email protected]")
    
  • Sử dụng XPATH:

    driver.get('https://www.chegg.com/auth?action=login&redirect=https%3A%2F%2Fwww.chegg.com%2F')
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[@aria-label='Join Us' and @href='https://www.nike.com/register']"))).click()
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@name='emailAddress']"))).send_keys("[email protected]")
    
  • Lưu ý : Bạn phải thêm các lần nhập sau:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
  • Ảnh chụp Trình duyệt: