Python Selenium无法点击按钮(不在iframe内)

时间:2017-03-17 15:36:48

标签: python html selenium iframe xpath

网页上有一个如下所示的按钮:

<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 个答案:

答案 0 :(得分: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"按钮