Python 按钮未被单击

Python 按钮未被单击,python,selenium,Python,Selenium,脚本需要单击弹出窗口上的“确定”按钮。该按钮没有被任何IFrame包围,只有Textarea在IFrame内。我使用CSS选择器和XPath单击一个按钮,它不会被单击,也不会再现错误 driver.find_element_by_xpath("//*[@id='mceu_7']").click() driver.switch_to.frame(driver.find_element_by_xpath("//iframe[@src='https://qsm.qoo10.sg/gmkt.inc

脚本需要单击弹出窗口上的“确定”按钮。该按钮没有被任何IFrame包围,只有Textarea在IFrame内。我使用CSS选择器和XPath单击一个按钮,它不会被单击,也不会再现错误

driver.find_element_by_xpath("//*[@id='mceu_7']").click()   
driver.switch_to.frame(driver.find_element_by_xpath("//iframe[@src='https://qsm.qoo10.sg/gmkt.inc.gsm.web/common/scripts/module/tiny_mce_4.5.7/source/plugins/codemirror/source.html']"))

driver.find_element_by_xpath("/html/body/div/div[1]/textarea").send_keys("Some text")
driver.switch_to.default_content()

# Click on the "Ok" button.
time.sleep(10)
driver.find_elements_by_css_selector("#mceu_108 > button:nth-child(1)").click()
在使用
切换到.default\u content()之前,也单击了按钮。

以下是弹出窗口的外观:

你能帮我解决一下问题吗

HTML代码:

<div id="mceu_107-body" class="mce-container-body mce-abs-layout" >
<div id="mceu_107-absend" class="mce-abs-end"></div>
<div id="mceu_108" class="mce-widget mce-btn mce-primary mce-abs-layout-item mce-first mce-btn-has-text" tabindex="-1" aria-labelledby="mceu_108" role="button">
<button role="presentation" type="button" tabindex="-1" >
<span class="mce-txt">Ok</span></button></div><div id="mceu_109" class="mce-widget mce-btn mce-abs-layout-item mce-last mce-btn-has-text" tabindex="-1" aria-labelledby="mceu_109" role="button">
<button role="presentation" type="button"><span class="mce-txt">Cancel</span></button></div></div>

好啊
取消

如果是弹出窗口,您可能需要等待按钮出现, 看看这个。 希望它有帮助

有两件事:

  • 您正在使用
    find\u elements\u by\u css\u selector
    而不是
    find\u elements\u by\u css\u selector

    请注意,find_elements将返回一个web元素列表

  • Ok文本位于span标记之间,因此使用
    //span[text()=“Ok']
    可能不起作用。此span父标记是一个按钮,因此单击按钮比单击span更有意义

  • 代码您可以尝试:

    driver.find_element_by_xpath("//span[text()='Ok']/parent::button").click()  
    
    既然您已经提到了这一点,它就不存在于iframe中。这段代码应该适合你


    希望这会有所帮助。

    在单击之前和屏幕上出现弹出窗口之前,我有延迟。您能提供HTML代码吗?
    @id
    值可能是动态的。您是否尝试了另一个选择器,例如XPath
    /*[.=“Ok”]
    ?更新为HTML代码,但这还不够。请提供一个HTML块来查看按钮的位置,而不仅仅是按钮本身哦,对不起,我添加了更多HTML代码谢谢!这很有效,但为什么我在button元素上使用css_选择器或xpath并使用
    find_element_by
    ?您已经使用了此代码
    驱动程序。find_elements_by_css_选择器(“#mceu_108>按钮:第n个子项(1)”。单击(),当您使用
    find_elements
    时,您将有一个web元素列表,调用click on list不适用。第二个原因可能是您的定位器,单击按钮比单击span更符合逻辑,希望这能有所帮助