Я хочу нажать "Страница 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>
Поскольку ваше требование - " Я хочу нажать" Страница 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
Ваш 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()