Как выбрать / щелкнуть раскрывающийся контент с помощью селена chromewebdriver / python - PullRequest
0 голосов
/ 06 апреля 2019

Форма моего сайта обновлена, и мой скрипт больше не работает. Я не могу это исправить, потому что я не могу найти, как выбрать в раскрывающемся списке содержимого с помощью веб-драйвера selenium chrome и python.

formattedstate - это значение отформатированных данных (считанных из файла)

driver.find_element_by_css_selector(f"option[title='{formattedState}']").click()

driver.find_element_by_xpath("//*[text()='{formattedState}']").click()

driver.find_element_by_css_selector(f"option[value='{formattedState}']").click()

Это данные выпадающего контента из веб-формы. Я выбрал первый штат в раскрывающемся списке = Алабама

<input aria-valuetext="" role="combobox" tabindex="0" 
placeholder="State/Province/Region" readonly="" height="100%" size="1" autocomplete="off" value="" data-spm-anchor-id="a2g0o.placeorder.0.i14.5f0b321eC7zfLx">



<li class="next-menu-item" title="Alabama" data-spm-anchor-id="a2g0o.placeorder.0.i17.5f0b321eC7zfLx">Alabama</li>

Следует выбрать правильное состояние в выпадающем списке

Ответы [ 2 ]

1 голос
/ 06 апреля 2019

Сначала попытайтесь щелкнуть в поле со списком, затем подождите , пока не появится элемент состояния (li), и нажмите.

В приведенном ниже коде я использовал селектор css, чтобы получить li на title. Если вы хотите найти элемент по тексту, используйте:
wait.until(ec.visibility_of_element_located((By.XPATH, f"//li[.='{state}' and @class = 'next-menu-item']"))).click()

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.support.ui import WebDriverWait

driver = webdriver.Chrome()
wait = WebDriverWait(driver, 10)

state = "Alabama"
driver.find_element_by_css_selector('input[placeholder="State/Province/Region"]').click()
wait.until(ec.visibility_of_element_located((
    By.CSS_SELECTOR, f"li.next-menu-item[title='{state}']"))).click()
0 голосов
/ 06 апреля 2019

JS SetAttribute работает на Combobox на удивление хорошо. Попробуйте

JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("document.getElementById('//id of element').setAttribute('value', '//value to set')");
// to click
js.executeScript("arguments[0].click();", element);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...