2017-03-17 97 views
1

有網頁上的按鈕,看起來像這樣:Python的硒不能在點擊鏈接(不裏面的iframe)

<button class="WAXG WEXG WKKH WOWG WPO" tabindex="0" data-automation-activebutton="true" aria-hidden="false" aria-disabled="false" data-automation-id="wd-ActiveList-addButton" role="button" data-automation-button-type="AUXILIARY" title="Add" type="button"><span class="WFXG WBXG"></span><span class="WCXG" title="Add">Add</span></button> 

我用下面的代碼按一下按鈕:

xpath = "//button[@data-automation-id='wd-ActiveList-addButton']" 
add = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, xpath))) 
add.click() 

它總是會導致以下錯誤:

selenium.common.exceptions.TimeoutException: Message: 

我已經用不同的方式來尋找元素,然後單擊嘗試,但總是得到相同的錯誤。該按鈕不在iframe內。此外,我可以訪問/點擊按鈕周圍的所有元素。由於錯誤信息是空的,我無法確定爲什麼發生這種情況。

編輯

下面是來自檢查者周圍的一些代碼:

<div class="WF-M WFN WOYM WEYM" id="wd-SectionView-NO_METADATA_ID"> 
    <div class="WH-M"> 
     <div class="WOO WFN" data-automation-id="activeList" id="wd-ActiveList- 6$87772"> 
      <div class="WHP"> 
      </div> 
      <button class="WAXG WEXG WKKH WOWG WPO" tabindex="0" data-automation-activebutton="true" aria-hidden="false" aria-disabled="false" data-automation-id="wd-ActiveList-addButton" role="button" data-automation-button-type="AUXILIARY" title="Add" type="button"> 
       <span class="WFXG WBXG"></span> 
       <span class="WCXG" title="Add">Add</span> 
      </button> 
     </div> 
    </div> 
</div> 
+1

如果你嘗試一下跨度而不是按鈕? 'xpath =「// span [@ title ='Add']」'?有可能這個按鈕實際上不可見或者大小爲0。這裏不太可能給出'html',但是可能的。您也可以嘗試使用devtools或firepath來查看將鼠標放在按鈕上時突出顯示的元素,因爲它實際上可能是包含該按鈕的元素。 – mrfreester

+2

檢查這是否是唯一具有指定選擇器的元素print(len(driver.find_elements_by_xpath(「// button [@ data-automation-id ='wd-ActiveList-addButton']」)))'。可能有同樣的隱藏按鈕 – Andersson

+0

@mrfreester我仍然使用'xpath =「// span [@ title ='Add']」'得到相同的錯誤。當我點擊按鈕時,Firepath會爲按鈕生成以下xpath:'.//*[@ id ='wd-ActiveList-6 $ 87772']/button'。 – raul

回答

1

正如我已經承擔了意見有兩個頁面上的按鈕,可以通過屬性data-auto‌​mation-id='wd-Active‌​List-addButton'發現:第一是隱藏。這就是爲什麼你的期望等待,直到它變得可見總是返回False

您可能需要使用下面的代碼:

xpath = "(//button[@data-automation-id='wd-ActiveList-addButton'])[2]" 
add = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, xpath))) 
add.click() 

它應該讓你點擊可見"Add"按鈕