Как я использую python selenium для нажатия на панель навигации с выпадающим

1

Я хочу нажать "Страница 1" для отображения списка подменю. Питонный код, который я использовал

driver.find_element_by_xpath("nav/div/ul/li[2]/a").click()


код сайта:

<ul class="nav navbar-nav">
  <li class="active"><a href="#">Home</a></li>
  <li class="dropdown">
    <a class="dropdown-toggle" data-toggle="dropdown" href="#">Page 1
    <span class="caret"></span></a>
    <ul class="dropdown-menu">
      <li><a href="#">Page 1-1</a></li>
      <li><a href="#">Page 1-2</a></li>
      <li><a href="#">Page 1-3</a></li>
    </ul>
  </li>
  <li><a href="#">Page 2</a></li>
  <li><a href="#">Page 3</a></li>
</ul>

Изображение nav

Теги:
selenium
selenium-webdriver
selenium-chromedriver
automated-tests

2 ответа

0
Лучший ответ

Поскольку ваше требование - " Я хочу нажать" Страница 1 "для отображения списка подменю ".

Вместо использования абсолютного xpath вы можете использовать linkText.

parent_page1 = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.LINK_TEXT, "Page 1")))  
parent_page1.click()  

если этот linkText не работает для вас, вы можете использовать относительный xpath:

parent_page1 = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//a[@class='dropdown-toggle' and contains(text(),'Page 1')]")))  
parent_page1.click()  

Обратите внимание, что этот код будет нажимать на страницу 1, если и только если он доступен для клика.

Если это действие наведения, вы можете продолжить цепочку действий.

Примечание. Это для родительского Page1. Не для ребенка. и на основе xpath вы попробовали nav/div/ul/li[2]/a

0

Ваш x-путь неверен. любой x-путь начинается с /или//. Это может быть проблемой.

попробуйте с помощью x-path //nav/div/ul/li[2]/a

в коде,

driver.find_element_by_xpath("//nav/div/ul/li[2]/a").click()

Наверное, вы используете навигационную панель wstschool bootstrap. Если да, страница находится внутри рамки, поэтому сначала вам нужно переключиться на фрейм, как показано ниже.

driver.switch_to_frame("iframeResult")
driver.find_element_by_xpath("//nav/div/ul/li[2]/a").click()

Ещё вопросы

Сообщество Overcoder
Наверх
Меню