Selenium не может нажимать на элементы при доступе к веб-странице с помощью Selenium и Python - PullRequest
0 голосов
/ 11 июня 2019

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

Проблема в том, что Selenium не может найтиxpath Я использую, чтобы найти эти две кнопки!

Вот мой код:

from selenium import webdriver
driver = webdriver.Chrome("webdriver/chromedriver.exe")
driver.implicitly_wait(30)
driver.get("https://www.indiacashandcarry.com/shop/HomestyleFood")

locationButton = driver.find_element_by_xpath('//*[@id="location-list"]/li[1]/h4/a')
groceriesButton = driver.find_element_by_xpath('//*[@id="price-list-0"]/ul/li[1]')
locationButton.click()
groceriesButton.click()

Вот сайт: https://www.indiacashandcarry.com/shop/HomestyleFood

Я думаю, это потому, чтоэто всплывающее окно относится к другому типу фрейма, но я не смог найти индекс iframe, поэтому я немного растерялся.Пожалуйста, помогите!

Ответы [ 2 ]

2 голосов
/ 11 июня 2019

Ваш xpath выглядит отлично. Используйте Webdriverwait для обработки динамического элемента.

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.Chrome("webdriver/chromedriver.exe")
driver.get("https://www.indiacashandcarry.com/shop/HomestyleFood")
WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,'//*[@id="location-list"]/li[1]/h4/a'))).click()
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,'//*[@id="price-list-0"]/ul/li[1]'))).click()
1 голос
/ 11 июня 2019

На веб-сайте https://www.indiacashandcarry.com/shop/HomestyleFood сначала click() в Выберите это местоположение , связанное с FREMONT , а затем click() в Продовольственные товары , которое вам нужно вызвать WebDriverWait для element_to_be_clickable(), и вы можете использовать следующее решение:

  • Блок кода:

    options = webdriver.ChromeOptions() 
    options.add_argument("start-maximized")
    # options.add_argument('disable-infobars')
    options.add_argument('--disable-extensions')
    driver=webdriver.Chrome(chrome_options=options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
    driver.get("https://www.indiacashandcarry.com/shop/HomestyleFood")
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//h4[contains(., 'Fremont')]/a"))).click()
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//h5[@class='mtopbot5 ng-binding' and contains(., 'Groceries')]"))).click()
    
  • Снимок браузера:

Fremont_Groceries

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