Как нажать на элемент с текстом «GET ROUTES» в URL-адресе https://maps.mapmyindia.com/direction, используя Selenium и Python? - PullRequest
0 голосов
/ 05 сентября 2018

Как нажать на кнопку «получить маршруты» на «https://maps.mapmyindia.com/direction" по селену с помощью Python? Спасибо за помощь!

Что я пробовал? Я следовал этому « python selenium, нажмите на кнопку », но это не щелкает.

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

driver = webdriver.Firefox(executable_path=r'C:\Users\User\Desktop\pyCode\geckodriver-v0.21.0-win64\geckodriver.exe')
driver.get("https://maps.mapmyindia.com/direction")
startLocation = driver.find_element_by_id("auto_start")
startLocation.send_keys("28.4592,77.0727")
endLocation = driver.find_element_by_id("auto_end")
endLocation.send_keys("28.4590,77.0725")

driver.find_element_by_css_selector('div.col-xs-6.pull-right.text-right').click()

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

Чтобы щелкнуть элемент с текстом GET ROUTES на https://maps.mapmyindia.com/direction, необходимо:

  • Induce WebDriverWait для присутствующего контейнера элемента в HTML DOM .
  • Затем вам нужно удалить атрибут style="display: none;"
  • Наконец, вы можете отправить последовательность символов и вызвать метод click() для элемента с текстом как GET ROUTES .
  • Кодовый блок:

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    driver=webdriver.Firefox(executable_path=r'C:\Utility\BrowserDrivers\geckodriver.exe')
    driver.get("https://maps.mapmyindia.com/direction")
    search_tab = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, "div.tab-pane.fade.in.search-tab.active")))
    driver.execute_script("arguments[0].removeAttribute('style')", search_tab)
    driver.find_element_by_css_selector("input.form-control.as-input#auto").send_keys("28.4592,77.0727")
    driver.find_element_by_css_selector("input.form-control.as-input#auto_end").send_keys("28.4590,77.0725")
    driver.find_element_by_css_selector("h2.get-btn>a.get-route#get_d").click()
    
  • Снимок браузера:

map_my_india

0 голосов
/ 05 сентября 2018

Я просмотрел страницу, и, похоже, у кнопки «Получить маршруты» есть связанный с ней идентификатор. Вы можете просто использовать это

Итак, последняя строка в вашем коде должна быть:

driver.find_element_by_id("get_d").click()

Вы также можете использовать другие селекторы:

xpath: //a[text()='Get routes']
css: #get_d

При написании тестовых сценариев вы всегда можете проверить селекторы в браузере, прежде чем включать их в тестовый сценарий. Ниже приведены несколько простых подходов, которые я применяю для проверки селекторов:

  1. При использовании 'id' просто используйте следующий javascript в консоли браузера: document.getElementById("get_d"). Это должно вернуть элемент в консоли браузера, если используемый вами идентификатор действителен.
  2. При использовании xpath используйте следующую строку: $x("//a[text()='Get routes']") в консоли браузера. Это также вернет все элементы, связанные с упомянутым вами xpath
  3. При использовании css-селектора используйте следующую строку: $$("#get_d"). Подобно подходу xpath, он вернет все элементы, связанные с упомянутым вами селектором css
...