2016-12-16 197 views
0

我是新的Python的硒webdriver學生。硒Webdriver沒有這樣的元素:無法找到元素

我想單擊()下一個按鈕,但它不起作用。

我在這裏呆了幾天。

謝謝你的幫助。

消息錯誤

Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id='next_button']"} 

這是我的代碼

browser.find_element_by_xpath("//*[@id='next_button']").click() 

這是網頁源

<div id=「banner" class="shell" style="width: 786px; background-color: rgb(0, 0, 255);"> 
<input id=「json" value=「x" type="hidden"> 
    <div class="shell"> 
     <div class="border"> 
      <div id="header" style="height: 135px;"> 
      <div id="navigation"> 
      <div id="main" style="background-color:#FFFFFF;"> 
       <div id="content" class="left" style="padding: 30px 0px 20px; left: 250px;"> 
        <style> 
        <div style="width: 100%;"> 
         <div class="inPn" style="width: 100%;background: #ffffff"> 
          <div class="detail"> 
           <h3>Example Event</h3> 
           <table class="fit"> 
            <colgroup> 
            <tbody> 
             <tr valign="middle"> 
              <td> 
              <td> 
               <div style="float:right; padding:5px;"> 
                <img id=「back_button" src="https://www.site/back.png" style="cursor: pointer;"> 
                <img id=「next_button" src="https://www.site/next.png" style="cursor: pointer;margin-top: 10px;" 
+0

你確定這是不是一個IFRAME裏面,它是可見的?順便說一句,不要使用XPath來做這種事情......使用'.find_element_by_id(「next_button」)'。 XPath速度更慢,更脆弱,並且瀏覽器之間的支持不一致。首選id然後選擇CSS Selectors ...然後如果您需要通過包含文本的元素獲取元素,請使用XPath。 – JeffC

回答

0

當你的元素需要從src獲得圖像,您可能需要等待一段時間,直到出現頁面上的目標元素:

from selenium.webdriver.common.by import By 
from selenium.webdriver.support import expected_conditions as EC 
from selenium.webdriver.support.ui import WebDriverWait as wait 

button = wait(browser, 10).until(EC.presence_of_element_located((By.XPATH,"//img[@id='next_button']"))) 
button.click() 
+0

對不起,我的錯誤,現在我在src編輯。 – rurucatcat

+0

我做你的建議,這是行不通的,這個錯誤**'WebDriver'對象不可調用** – rurucatcat

+0

你可以顯示導致此異常的行嗎? – Andersson

0

我也建議等待頁面使用下面的代碼加載:

from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 
from selenium.common.exceptions import TimeoutException 

try: 
    element = WebDriverWait(browser, 15).until(EC.presence_of_element_located((By.XPATH, "//img[@id='next_button']"))) 
    browser.find_element_by_xpath("//img[@id='next_button']").click()  
except TimeoutException: 
    print 'Timeout - No tag found' 
    continue 

或使用:

WebDriverWait(browser, 15).until(lambda driver: driver.find_elements(By.XPATH,"//img[@id='next_button']")) 
+0

錯誤是**超時 - 找不到標籤** 但我確定xpath是正確的,因爲我使用firepath, – rurucatcat

+0

您使用哪個webdriver? –

+0

我使用mac上的chromedriver python2.7 – rurucatcat