【问题标题】:Selenium : How to wait then click?Selenium:如何等待然后点击?
【发布时间】:2020-06-29 09:47:57
【问题描述】:

我正在使用 selenium 进行自动化,我想单击每个 <ul>elements,然后等待,然后再次单击该元素。这是我的代码,但似乎不是解决方案:

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>

【问题讨论】:

    标签: python css-selectors selenium-chromedriver webdriverwait


    【解决方案1】:

    Thread.sleep(100) 是一个选项吗?

    【讨论】:

      【解决方案2】:

      使用.find_elements 定义您的li

      使用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()
      

      【讨论】:

      • len(listItem) 等于 0
      • @AbdoRabah 代码已更新,添加 WebDriverWait 以等待 listItem,请再试一次,看看结果如何。希望这会有所帮助。
      • @frianH..i 修复了 XPath 为 listItem = driver.find_elements_by_xpath("//*[@id='bs-example-navbar-collapse-1']/div/ul/li")
      猜你喜欢
      • 2020-12-18
      • 2015-11-30
      • 1970-01-01
      • 2012-03-26
      • 1970-01-01
      • 1970-01-01
      • 2016-12-29
      • 2020-02-23
      • 1970-01-01
      相关资源
      最近更新 更多