div中的python + selenium按钮可在测试中单击,但在自动化时不可点击

时间:2017-09-12 14:00:19

标签: python html css selenium

<div class="t-window-content t-content" style="overflow: auto; width: 400px; height: 389.4px;">
    <div id="frmSchTarget">
        <form action="/Search/SearchTypePreName"
            method="post" onclick="Sys.Mvc.AsyncForm.handleClick(this, new Sys.UI.DomEvent(event));"
            onsubmit="Sys.Mvc.AsyncForm.handleSubmit(this, new Sys.UI.DomEvent(event), { insertionMode: Sys.Mvc.InsertionMode.replace, onBegin: Function.createDelegate(this, PreNameListWindow), onSuccess: Function.createDelegate(this, Form_OnSuccess) });"><input type="hidden" id="NameList"
                name="NameList">
            <div style="text-align: left; padding-left: 10px">
                <span style="margin-right: 20px;">
        <button id="TreeViewButtonCollapse" name="TreeViewButtonCollapse" onclick="ExpandCollapseTreeView('NameListTreeView', false); return false;" title="Collapse All">
            <img src="/Content/Images/toggle_up.png">
        </button>
        <button id="TreeViewButtonExpand" name="TreeViewButtonExpand" onclick="ExpandCollapseTreeView('NameListTreeView', true); return false;" title="Expand All">
            <img src="/Content/Images/toggle_down.png">
        </button>
    </span>
            </div>
            <div id="divSelectNamesArea" style="height: 325px; overflow: auto;">
                "i removed a very large list from here"
            </div>
            <hr class="PopupLineStyle">
            <div style="text-align: left; padding-left: 10px">
                <span style="margin-right: 20px;"><input type="checkbox" id="Checkbox1" name="SelectAllPrenamesToggle" onclick="SelectAllOrNoneInTreeView('NameListTreeView', this.checked);">
    All / None</span>
                <input type="submit" class="t-button" value="Done"
                    onclick="GetNameListString('NameListTreeView');">
            </div>
        </form>
    </div>
</div>

上面的代码基本上是我存在的祸根大约一个星期了。我正在尝试运行webscraper并在提交请求时在页面上显示div叠加层。上面的代码段显示了如何完成&#39;完成&#39;用来摆脱它的按钮已经实现。

在测试中,我可以使用

buttons = driver.find_elements_by_xpath('//input[contains(@class,"t-button")]')

找到所有按钮,然后是按钮[5],但是一旦我自动化,这就不起作用了。

我还尝试使用以下xpath进行隐式等待:

//*[@id="frmSchTarget"]/form/div[3]/input

这也是一个禁忌。请帮助,我已经尝试了几天已经搜索到stackoverflow的所有内容。我无法弄明白。

1 个答案:

答案 0 :(得分:0)

//在点击按钮之前等待15秒进行调试,以防万一前点击按钮 //它将在页面上呈现出来

time.sleep(15)

button_done = driver.find_element_by_css_selector("#frmSchTarget input[value='Done']")

button_done.click()

如果上面的代码工作,删除time.sleep()并再次运行,如果失败,则意味着 你需要等一下才能点击它,请使用显式等待替换time.sleep()