无法在python中使用selenium webdriver定位元素

时间:2017-06-20 19:07:35

标签: python selenium xpath

我想在名为http://elegalix.allahabadhighcourt.in的网站上进行一些自动化测试。我使用以下python代码单击一个名为" Advanced"的按钮。在上面的网站上:

代码#

 <table class="bordered highlight" *ngIf='candInfo && candInfo.length'>
                <thead>
                  <tr >
                      <th>Nom</th>
                      <th>Prénom</th>
                      <th>Parti Politique</th>
                      <th>Département</th>
                      <th>Commune</th>
                  </tr>
                </thead>

                <tbody>
                  <tr *ngFor = 'let candidats of candInfo | personFilter : filterBy'>
                    <td>{{candidats.nom}}</td>
                    <td>{{candidats.prenom}}</td>
                    <td>{{candidats.parti}}</td>
                    <td>{{candidats.departement}}</td>
                    <td>{{candidats.commune}}</td>
                  </tr>

                </tbody>
          </table>

错误#

from selenium import webdriver
driver = webdriver.Chrome('./chromedriver')
driver.get('http://elegalix.allahabadhighcourt.in')
driver.set_page_load_timeout(20)
driver.maximize_window()
driver.find_element_by_xpath("//input[@value='Advanced']").click()

P.S我是python编程的新手。我尝试了不同的xpath变种,并尝试使用其他find_element_by方法,但似乎没有一个在这个网站上工作...我在Firefox浏览器上遇到类似的错误......

3 个答案:

答案 0 :(得分:2)

这是因为您要查找的元素位于框架内,首先切换到框架然后搜索元素

from selenium import webdriver
driver = webdriver.Chrome('./chromedriver')
driver.get('http://elegalix.allahabadhighcourt.in')
driver.set_page_load_timeout(20)
driver.maximize_window()
driver.switch_to.frame(driver.find_element_by_name('sidebarmenu'))
driver.find_element_by_xpath("//input[@value='Advanced']").click()
driver.switch_to.default_content()

答案 1 :(得分:0)

我遇到了这个问题以及有关窗口大小的问题。因为当Windows的大小很小时,对象的位置已更改,所以我使用driver.maximize_window(),然后使用driver.find方法,它可以正常工作。

答案 2 :(得分:0)

在打开链接的命令后添加:

driver.maximize_window()