Не удается найти и щелкнуть элемент, используя Selenium и Python - PullRequest
0 голосов
/ 14 марта 2020

Я действительно попробовал почти все, что у меня на уме, чтобы нажимать на кнопки. Нет

Ниже представлен полный HTML код

<div class="row nest">
   <div class="condition-row clearfix" id="condition_row_1">
      <div class="field small-12 medium-6 columns">
         <label>
         Does this item still have the retail tags attached? <span>*</span>
         </label>
         <div class="btn-group elastic">
            <a class="pill condition-tags btn white sml ">Yes</a><a class="pill condition-tags btn white sml ">No</a>        
         </div>
         <p class="error clearfix" id="condition-tags_error" style="display: none;">Please select an answer</p>
         <input class="required" type="hidden" id="property[condition-tags]" name="property[condition-tags]" value="">
      </div>
      <div class="field small-12 medium-6 empty columns"></div>
   </div>
   <div class="condition-row clearfix" id="condition_row_2">
      <div class="field small-12 medium-6 columns">
         <label>
         Does this item have any signs of wear? <span>*</span>
         </label>
         <div class="btn-group elastic">
            <a class="pill condition-wear btn white sml ">Yes</a><a class="pill condition-wear btn white sml ">No</a>        
         </div>
         <p class="error clearfix" id="condition-wear_error" style="display: none;">Please select an answer</p>
         <input class="required" type="hidden" id="property[condition-wear]" name="property[condition-wear]" value="">
      </div>
      <div class="field small-12 medium-6 empty columns"></div>
   </div>
   <div class="condition-row clearfix" id="condition_row_3">
      <div class="clearfix"></div>
      <div class="field small-12 columns" id="condition-custom-outer" style="display: none;">
         <hr class="hr-line">
         <label>Tag any signs of wear.</label>
         <div class="btn-group elastic">
            <a class="pill condition-list btn white sml ">Scuffs or scratches</a><a class="pill condition-list btn white sml ">Damaged or missing stones</a><a class="pill condition-list btn white sml ">Tarnishing</a>            <a class="condition-add-custom btn white sml" id="condition-add-custom" href="javascript:void(0);">
            <span class="icon-plus-solid"></span>Add your own
            </a>
         </div>
         <div class="clearfix"></div>
         <hr class="hr-line">
         <label>Note</label>
         <textarea class="condition-notes" placeholder="Please describe wear or damage in detail." id="property[condition-note]" name="property[condition-note]"></textarea>
         <input class="customConditions" type="hidden" id="property[condition-list]" name="property[condition-list]" value="">
      </div>
      <div class="field small-12 medium-6 empty columns"></div>
   </div>
</div>

Пробовал с XPATH, CSS_SELECTOR, LINK_TEXT

Все доступные методы

Кажется, ни один из них не работает.

try:
    WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.XPATH,'/html/body/div[3]/div/div/div[2]/form/div[3]/div[2]/div[1]/div/div[2]/div[1]/div[2]/div/div[1]/div[1]/div/a[2]'))).click()
except:
    errorDuringFill = True

Button on screenshot

Использование FIREFOX

Живая цель доступна на: https://www.tradesy.com/sell/

Категория: Обувь ..., аксессуары, украшения, браслеты

Ответы [ 3 ]

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

Этот ответ взят из: Невозможно щелкнуть элемент: ElementClickInterceptedException в Splinter / Selenium

Вы можете попробовать следующие 2 метода, чтобы нажать на элемент.

element = driver.find_element_by_css('div[class*="loadingWhiteBox"]')
driver.execute_script("arguments[0].click();", element)

element = driver.find_element_by_css('div[class*="loadingWhiteBox"]')
webdriver.ActionChains(driver).move_to_element(element ).click(element ).perform()

надеюсь, что это сработает.

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

Я бы попробовал создать ссылку на класс condition-row выше, чтобы исключить похожие компоненты этой страницы. И тогда мы можем использовать класс a и text()

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

driver.implicitly_wait(4)
e = driver.find_element_by_xpath("//div[contains(@class,'condition-row')]//a[contains(@class,'condition-tags') and text()='No']")
e.click()
0 голосов
/ 14 марта 2020

Попробуйте изменить xpath на:

"//div[contains(@class,'condition-row')]//a[contains(.,'No')]"

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

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