1

在Selenium 文档网站的搜索字段中发送文本后,我试图从自动建议中选择一个选项。但我找不到任何这些建议。

代码试验:

driver.get('https://www.selenium.dev/documentation/en/')
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#search-by"))).send_keys("selenium")

自动建议的快照:

文件

任何人都可以帮我选择任何自动建议吗?

4

2 回答 2

3

+1 @Moshe Slavin 的回答。是autocomplete-suggestions包含所有autocomplete-suggestion's

为了捕获元素,我使用getPageSource()打印出页面中的元素。

一旦我弄清楚了这个元素,下面的其余代码就是不言自明的

wait.until(ExpectedConditions.elementToBeClickable(By.className("autocomplete-suggestion")));

List<WebElement> abc = driver.findElements(By.className("autocomplete-suggestion"));

String value = "Remote WebDriver client";

List<String> def = new ArrayList<String>();

    for (int i = 0; i < abc.size(); i++) {

            //Get the values and store it in a list
            def.add(abc.get(i).getAttribute("data-title"));

        }

        if (def.contains(value))

            abc.get(def.indexOf(value)).click();

        else
            System.out.println("Value not present");
于 2020-12-28T02:48:53.030 回答
3

Theautocomplete-suggestionsdiv包含所有autocomplete-suggestion's 的。

这是元素的片段 在此处输入图像描述

为了捕捉元素,我f8在搜索 selenium 时使用了按钮,这样元素就不会消失。

这是可视化的代码片段:

def highlight_element(element):
    driver_elem = element.parent

    def apply_style(s):
        driver_elem.execute_script("arguments[0].setAttribute('style', arguments[1]);",
                                   element, s)

    original_style = element.get_attribute('style')
    apply_style("background: yellow; border: 2px solid red;")
    sleep(0.5)
    apply_style(original_style)

driver.get("https://www.selenium.dev/documentation/en/")
WebDriverWait(driver,30).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#search-by")))
driver.find_element_by_css_selector("#search-by").send_keys("selenium")
WebDriverWait(driver,30).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, ".autocomplete-suggestions  .autocomplete-suggestion")))
for ele in driver.find_elements_by_css_selector(".autocomplete-suggestions  .autocomplete-suggestion"):
    highlight_element(ele)
于 2020-12-27T17:11:42.177 回答