Не могу установить флажок с селеном - PullRequest
0 голосов
/ 06 июня 2019

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

xpath = driver.find_element_by_xpath

for i in range(20):
    time.sleep(0.5)
    try:
        xpath("//*[@id='pub_check_sort3_0']").click()
        # checkbox = xpath("//*[@id='pub_check_sort3_0']")
        # driver.execute("arguments[0].click();",checkbox)
        break
    except NoSuchElementException as e:
        print('retry')
        time.sleep(1)
    else:
        raise e

Это коды, которые я пытался установить флажок, но до сих пор не могу установить флажок.Кроме того, я пробовал не только значение xpath, но и id и класс.

<li class="general">
  <span class="fCheck">
    <input onclick="checkAction(this)" class="selectPL" type="checkbox" id="pub_check_sort3_0" value="025001">
     <label for="pub_check_sort3_0"></label>Academic Journal (1,505)</span></li>

Это HTML-коды для флажка, а ниже указан xpath // * [@ id = "pub_check_sort3_0"]

Traceback (most recent call last):
  File "/Users/chanhee.kang/Desktop/DBpia/db_sel.py", line 37, in     <module>
    xpath("//*[@id='pub_check_sort3_0']").click()
  File "/Users/chanhee.kang/anaconda3/lib/python3.7/site-    packages/selenium/webdriver/remote/webelement.py", line 80, in click
    self._execute(Command.CLICK_ELEMENT)
  File "/Users/chanhee.kang/anaconda3/lib/python3.7/site-    packages/selenium/webdriver/remote/webelement.py", line 633, in     _execute
    return self._parent.execute(command, params)
  File "/Users/chanhee.kang/anaconda3/lib/python3.7/site-    packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/Users/chanhee.kang/anaconda3/lib/python3.7/site-    packages/selenium/webdriver/remote/errorhandler.py", line 242, in     check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementClickInterceptedException:     Message: element click intercepted: Element <input     onclick="checkAction(this)" class="selectPL" type="checkbox"     id="pub_check_sort3_0" value="025001"> is not clickable at point (73,     555). Other element would receive the click: <div class="filterGroup     eToggleSection">...</div>
  (Session info: chrome=74.0.3729.169)
  (Driver info: chromedriver=74.0.3729.6     (255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29}),platform=Mac OS X 10.14.0 x86_64)

Это ошибки, которые я получил.

1 Ответ

0 голосов
/ 06 июня 2019

К click() на желаемом элементе вы должны заставить WebDriverWait для элемента быть активируемым , и вы можете использовать любое из следующих решений:

  • Использование CSS_SELECTOR:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "li.general label[for='pub_check_sort3_0']"))).click()
    
  • Использование XPATH:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//li[@class='general']//label[@for='pub_check_sort3_0']"))).click()
    
  • Примечание: Вы должны добавить следующие импорты:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...