网页上有一个如下所示的按钮:
<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>
答案 0 :(得分:1)
正如我已经在评论中假设的那样,页面上有两个按钮可以通过属性data-automation-id='wd-ActiveList-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"
按钮