Невозможно щелкнуть элемент в списке с помощью selenium.webdriver - PullRequest
0 голосов
/ 08 января 2020

Я хочу дополнительно отфильтровать результаты поиска по местоположению. Я хочу получить результаты только для "США", поэтому хочу нажать "США", порядок которых изменяется в зависимости от ключевых слов.
Следующий код не работает. Нет сообщения об ошибке, но ничего не происходит. Спасибо!

  browser.implicitly_wait(30)
  element = browser.find_element_by_xpath("//span[contains(text(),'United 
  States')]")

  browser.execute_script("arguments[0].click();", element)

enter image description here

В случае успеха, "Соединенные Штаты" также должны появиться в узком списке:

enter image description here

The HTML source is as follows:

    <ul class="supplemental filters  " aria-labelledby="podfiltersbuttonlocation" data-id="location">
                <li class="preferred">
                    <h3 class="closable">
                        <span>
                            Select location by publications to display at the top of this list. <a 
    href="#" data-action="editpreferred">Edit Settings</a>
                        </span>
                        <button data-action="dismisspreferred" type="button" class="icon la- 
   CloseRemove">
                            <span role="tooltip" class="tooltip">Dismiss this message</span>
                        </button>
                    </h3>
                </li><li>
                    <input type="checkbox" data-id="pf0" data-value="International" id="_sp79k_pf0" 
    data-filtertype="location">
                    <label for="_sp79k_pf0" aria-label="">
                            <span>International</span>
                            <span class="count">83,428</span>
                    </label>
                </li>
                <li>
                    <input type="checkbox" data-id="pf1" data-value="United States" id="_sp79k_pf1" 
    data-filtertype="location">
                    <label for="_sp79k_pf1" aria-label="">
                            <span>United States</span>
                            <span class="count">31,153</span>
                    </label>
                </li>
                <li>
                    <input type="checkbox" data-id="pf2" data-value="Non-jurisdictional" id="_sp79k_pf2" 
    data-filtertype="location">
                    <label for="_sp79k_pf2" aria-label="">
                            <span>Non-jurisdictional</span>
                            <span class="count">10,936</span>
                    </label>
                </li>
                <li>
                    <input type="checkbox" data-id="pf3" data-value="California" id="_sp79k_pf3" data- 
    filtertype="location">
                    <label for="_sp79k_pf3" aria-label="">
                            <span>California</span>
                            <span class="count">6,785</span>
                    </label>
                </li>
                <li>
                    <input type="checkbox" data-id="pf4" data-value="Georgia" id="_sp79k_pf4" data- 
   filtertype="location">
                    <label for="_sp79k_pf4" aria-label="">
                            <span>Georgia</span>
                            <span class="count">2,814</span>
                    </label>
                </li>
                <li class="more">
                    <button data-action="moreless" class="icon la-ShowMore" type="button">
                        More
                    </button>
                </li>
                <li class="sel-multi">
                    <button type="button" data-action="selmulti" rel="modal" href="/modals/select- 
   Filters.shtml">Select multiple</button>
                </li>
            </ul>

1 Ответ

0 голосов
/ 08 января 2020

Чтобы нажать checkbox, вызвать WebDriverWait () и element_to_be_clickable (), а затем Xpath.

WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,"//ul[@class='supplemental filters  ']//li[.//span[text()='United States']]/input[@type='checkbox']"))).click()

Вам необходимо импортировать следующие библиотеки.

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