如何 select 使用 Selenium 和 Python 从自动建议中选择一个选项
How to select an option from the auto suggestions using Selenium and Python
在 Selenium documentation 网站的搜索字段中发送文本后,我正在尝试 select 从自动建议中选择一个选项。但是我找不到任何这些建议。
代码试验:
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")
自动建议的快照:
任何人都可以帮我 select 任何自动建议吗?
autocomplete-suggestions
是包含所有 autocomplete-suggestion
的 div
。
这是元素的片段
为了捕获元素,我在搜索 selenium 时使用了 f8
按钮,这样元素就不会消失。
这是可视化的代码片段:
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)
+1 @Moshe Slavin 的回答。 autocomplete-suggestions
是包含所有 autocomplete-suggestion's
的 div
为了抓取元素,我使用了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");
在 Selenium documentation 网站的搜索字段中发送文本后,我正在尝试 select 从自动建议中选择一个选项。但是我找不到任何这些建议。
代码试验:
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")
自动建议的快照:
任何人都可以帮我 select 任何自动建议吗?
autocomplete-suggestions
是包含所有 autocomplete-suggestion
的 div
。
这是元素的片段
为了捕获元素,我在搜索 selenium 时使用了 f8
按钮,这样元素就不会消失。
这是可视化的代码片段:
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)
+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");