簡體   English   中英

遍歷 send_keys 列表(Selenium 和 Python)

[英]Loop through list for send_keys (Selenium & Python)

我試圖遍歷一個列表,然后讓代碼單擊搜索按鈕,打印結果並重復。 我收到此錯誤:

Traceback (most recent call last):

文件“qtest.py”,第 17 行,在 list = [PR311, PR311, 5, 7, 9] NameError: name 'PR311' is not defined

這是我的代碼:

    # Imports, of course
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.webdriver.support.ui import WebDriverWait
from bs4 import BeautifulSoup

# Initialize a Firefox webdriver
driver = webdriver.Firefox()

# Grab the web page
driver.get("https://mnlairport.ph/terminal-finder")

# We use .find_element_by_id here because we know the id
text_input = driver.find_element_by_xpath("/html/body/div[1]/div/div/div/div[2]/div/div[2]/div/form/div/input")

list = [PR311, PR3345, PR323, PR355, PR3987] 

# Using for loop 
for i in list: 

    # Then we'll fake typing into it
    text_input.send_keys(list)

    # Now we can grab the search button and click it
    search_button = driver.find_element_by_xpath("/html/body/div[1]/div/div/div/div[2]/div/div[2]/div/form/div/button")
    search_button.click()

    # We can feed that into Beautiful Soup
    soup = BeautifulSoup(driver.page_source, "html.parser")
    form = soup.find('div', class_= 'info-box')

    for post in form:
        print(post)

更新的代碼:現在的問題是,它不能正確循環

    csv_file = open('test.csv', 'w')
    csv_writer = csv.writer(csv_file)
    csv_writer.writerow(['post'])

    list = ["PR311", "XC827", "KD271", "5J745", "SQ916"] 

    # Using for loop 
    for i in list: 

    # We use .find_element_by_id here because we know the id
        text_input = driver.find_element_by_xpath("//input[contains(@class, 'form-control')]")

        # Then we'll fake typing into it
        text_input.send_keys(i)

        # Now we can grab the search button and click it
        search_button = driver.find_element_by_xpath("//button[contains(@class, 'search-btn')]")
        search_button.click()

        # We can feed that into Beautiful Soup
        soup = BeautifulSoup(driver.page_source, "html.parser")
        form = soup.find_all('div', attrs={'class': 'info-box'})

        for post in form:
            print(post)
            csv_writer.writerow([post.text])

         #Clear previous inputs
        text_input.clear()

    csv_file.close()

    # Close the webdriver
    driver.close()

我通過清除搜索欄關閉了循環,但它跳過了列表中的某些內容或不返回正確的值。

是字符串列表中的元素嗎? 然后用這個替換,您的代碼嘗試查找具有該名稱的變量

list = ["PR311", "PR3345", "PR323", "PR355", "PR3987"] 

此外,您每次都必須在開始或結束循環時獲取輸入元素。 你會遇到 Xpath 定義的問題

for i in list: 
    text_input = driver.find_element_by_xpath("//input[contains(@class, 'form-control')]")


    #Clear previous inputs
    text_input.clear()

    text_input.send_keys(i)

    search_button = driver.find_element_by_xpath("//button[contains(@class, 'search-btn')]")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM