Selenium python webdriver - PullRequest
       0

Selenium python webdriver

1 голос
/ 12 марта 2020

Я сейчас изучаю Selenium через python веб-драйвер с Chrome веб-браузером. Я написал тест, как в курсе, и у меня есть ошибка. Буду рад, если кто-нибудь может помочь, пожалуйста:

from selenium import webdriver

driver = webdriver.Chrome(executable_path="C:\Python27\chromedriver.exe")
driver.maximize_window()
driver.get("https://makemytrip.com")
driver.find_element_by_css_selector("label[for='fromCity']").click()
driver.find_element_by_css_selector("input[placeholder='From']").send_keys("Del")
cities =driver.find_elements_by_css_selector("p[class*='blackText']")
for city in cities
    if city.text =="Del Rio, United States":
        city.click()

Ошибка появляется рядом с городами в строке 9. спасибо.

Ответы [ 4 ]

1 голос
/ 12 марта 2020

Проблема в том, что вы нажимаете на WebElement, который, возможно, обновил вашу веб-страницу, а затем пытаетесь щелкнуть по следующему WebElement (в for for l oop), который потерпит неудачу, так как ваша страница был обновлен.

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

Попробуйте это:

from selenium import webdriver

driver = webdriver.Chrome(executable_path="C:/Python27/chromedriver.exe")
driver.maximize_window()
driver.get("https://makemytrip.com")
driver.find_element_by_css_selector("label[for='fromCity']").click()
driver.find_element_by_css_selector("input[placeholder='From']").send_keys("Del")

idx = 0
cities = lambda: driver.find_elements_by_css_selector("p[class*='blackText']")
while idx < len(cities()):
    driver.implicitly_wait(1000)
    city = cities()[idx]
    if city.text =="Del Rio, United States":
        city.click()
    idx += 1
0 голосов
/ 12 марта 2020

Спасибо, ребята. Мне удалось решить эту проблему. Дель Рио не появился в результатах поиска, поэтому я не мог выбрать эту опцию.

0 голосов
/ 12 марта 2020

попробуйте это

from selenium import webdriver

driver = webdriver.Chrome(executable_path="C:/Python27/chromedriver.exe")
driver.maximize_window()
driver.get("https://makemytrip.com")
driver.find_element_by_css_selector("label[for='fromCity']").click()
driver.find_element_by_css_selector("input[placeholder='From']").send_keys("Del")
cities =driver.find_elements_by_css_selector("p[class*='blackText']")
for city in cities:
    driver.implicitly_wait(1000)
    if city.text =="Del Rio, United States":
        city.click()

добавьте некоторую задержку, чтобы позволить раскрывающемуся списку загрузиться, иначе это выдаст другую ошибку

0 голосов
/ 12 марта 2020

вы просто пропускаете ":" в конце вашей строки l oop в строке 9.

for city in cities:

Если это не исправление, а просто опечатка, вы должны опубликовать сообщение об ошибке: )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...