Как отправить список элементов в форму в селене и нажать клавишу возврата для каждого элемента в этом списке? - PullRequest
0 голосов
/ 14 января 2020

Извините, если заголовок не ясен на 100%. По сути, я хочу отправить каждый элемент в списке в одну и ту же форму, но для каждого элемента нажмите «RETURN», затем переходите к следующему элементу, снова нажмите «send_keys», снова нажмите «RETURN» и т. Д.

Это это то, что у меня есть до сих пор

driver.find_element_by_name("website").send_keys(urls, Keys.RETURN)

Это будет отправлять все элементы в списке URL-адресов, а затем нажимать кнопку возврата, когда я хочу нажать кнопку возврата для каждого элемента в этом списке.

Спасибо

Ответы [ 2 ]

1 голос
/ 14 января 2020

Вы можете использовать для l oop:

for url in urls:
    driver.find_element_by_name("website").send_keys(url, Keys.RETURN)

Используйте WebDriverWait, чтобы дождаться, пока элемент будет активирован:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# ..
wait = WebDriverWait(driver, 10)

for url in urls:
    wait.until(EC.element_to_be_clickable((By.NAME, "website"))).send_keys(url, Keys.RETURN)

Вы также можете использовать \ue007 - Введите код ключа, который использует реализация Selenium Keys, но это очень специфическая проблема c. Обычно WebDriverWait является лучшим решением, потому что сайт делает что-то с каждым вводом:

urls = [
    "https://aa.com\ue007",
    "https://bb.com\ue007",
    "https://cc.com\ue007"
]
driver.find_element_by_css_selector("website").send_keys(urls)
0 голосов
/ 14 января 2020

Вы хотите, чтобы l oop прошел через ваш список, чтобы сделать это:

for url in urls:

     driver.find_element_by_name("website").send_keys(url, Keys.RETURN)

Я подозреваю, что это может ввести один URL, нажать return и затем отправить следующий, чтобы заменить его. Если вы хотите, чтобы весь список URL-адресов был введен в поле, то вам может понадобиться построить строку, возвращающую строку между каждым URL-адресом, а затем отправить один объект следующим образом:

urlList = ""

for url in urls:
     urlist = urlist + url + "\r\n"

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