Вы выходите из браузера в цикле for, поэтому вторая итерация ничего не может сделать, потому что браузер не открыт.Вы можете попробовать открыть новую вкладку и закрыть старую, если вам нужно начинать каждый раз заново.Попробуйте это:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome("C:/Users/Daniel/Desktop/chromedriver.exe")
driver.implicitly_wait(30)
driver.maximize_window()
hasla = ["ispot","myapple"]
for slogan in hasla:
driver.get("http://www.google.com")
search_field = driver.find_element_by_id("lst-ib")
search_field.clear()
search_field.send_keys("apple")
search_field.submit()
name = driver.find_element_by_link_text(slogan)
name.click()
# Save the current tab id
old_handle = driver.current_window_handle
# Execute JavaScript to open a new tab and save its id
driver.execute_script("window.open('');")
new_handle = driver.window_handles[-1]
# Switch to the old tab and close it
driver.switch_to.window(old_handle)
driver.close()
# Switch focus to the new tab
driver.switch_to.window(new_handle)
Если вы закрываете вкладку, вы не сможете увидеть результаты.Вы можете оставить его открытым и просто перейти на новую вкладку.В этом случае просто удалите driver.close()
.
В качестве альтернативы, если вы действительно хотите каждый раз полностью закрывать браузер и снова открывать его, вам просто нужно включить первые три строки в цикл for.
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
hasla = ["ispot","myapple"]
for slogan in hasla:
driver = webdriver.Chrome("C:/Users/Daniel/Desktop/chromedriver.exe")
driver.implicitly_wait(30)
driver.maximize_window()
driver.get("http://www.google.com")
search_field = driver.find_element_by_id("lst-ib")
search_field.clear()
search_field.send_keys("apple")
search_field.submit()
name = driver.find_element_by_link_text(slogan)
name.click()
driver.quit()
Чтобы ответить на второй вопрос:
Сначала импортируйте исключение NoSuchElementException:
from selenium.common.exceptions import NoSuchElementException
Затем замените попытку / исключение наthis:
try:
name = driver.find_element_by_link_text(slogan)
name.click()
except NoSuchElementException:
print('No such element')
driver.quit()
Он все еще собирается закрыть браузер и перейти к следующей итерации, если элемент найден или нет.