我想单击“页面1”以显示子菜单的显示列表 我使用的python代码
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>
答案 0 :(得分:0)
因为您的要求是“ 我要单击“页面1”以显示子菜单的显示列表”。
可以使用 linkText 而不是绝对的 xpath 。
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的。不适合孩子。并根据您尝试过的nav/div/ul/li[2]/a
答案 1 :(得分:0)
您的x路径不正确。任何x路径均以 /或// 开头。这可能是问题所在。
尝试使用x路径//nav/div/ul/li[2]/a
以代码
driver.find_element_by_xpath("//nav/div/ul/li[2]/a").click()
我想,您正在使用w3school bootstrap navigation bar。如果是,则页面在框架内,因此首先需要切换到如下框架。
driver.switch_to_frame("iframeResult")
driver.find_element_by_xpath("//nav/div/ul/li[2]/a").click()