我正在使用硒进行自动化,我想单击<ul>
每个元素,然后等待,然后再次单击元素。这是我的代码,但似乎不是解决方案:
def navBar():
driver=setup()
navBar_List = driver.find_element_by_class_name("nav")
listItem = navBar_List.find_elements_by_tag_name("li")
for item in listItem :
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.TAG_NAME,"li")))
item.click()
这是HTLM代码:
<ul class="nav navbar-nav">
<li tabindex="0">
<a class="h">
<div class="icon-left-navbar">
...
</div>
</a>
</li>
<li tabindex="0">
<a class="h">
<div class="icon-left-navbar">
...
</div>
</a>
</li>
<li tabindex="0">
<a class="h">
<div class="icon-left-navbar">
...
</div>
</a>
</li>
</ul>
答案 0 :(得分:0)
用li
定义.find_elements
。
使用xpath
来识别它们://ul[@class='nav navbar-nav']//li
。
使用循环,您可以利用增量来等待每个li
。我想它会像下面这样产生:
(xpath)[1]
(xpath)[2]
etc...
并尝试以下代码:
listItem = WebDriverWait(driver, 30).until(EC.visibility_of_all_elements_located((By.XPATH,"//ul[@class='nav navbar-nav']//li")))
for x in range(1, len(listItem)+1):
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"(//ul[@class='nav navbar-nav']//li)[" +str(x) +"]"))).click()
答案 1 :(得分:0)
Thread.sleep(100)是一个选项吗?