Can';t单击此按钮selenium webdriver python

Can';t单击此按钮selenium webdriver python,python,selenium,Python,Selenium,我试着从几个小时开始点击这个按钮,没有办法。 我试着从各个方面找到它。。 按钮在一个iframe“iframeGioco”中,我也切换到了它,但仍然没有 请帮帮我 这是html源代码: 我需要点击高亮显示的div按钮,或者在下一个div中单击“OK” 我用selenium编写了很多脚本,但是这个按钮很难点击。 我会链接这个页面,但我不能,因为你应该有一个eurobet帐户才能看到这个页面 多谢各位 我的尝试示例: browser.switch_to_frame(browser.find_ele

我试着从几个小时开始点击这个按钮,没有办法。 我试着从各个方面找到它。。 按钮在一个iframe“iframeGioco”中,我也切换到了它,但仍然没有

请帮帮我

这是html源代码:

我需要点击高亮显示的div按钮,或者在下一个div中单击“OK”

我用selenium编写了很多脚本,但是这个按钮很难点击。 我会链接这个页面,但我不能,因为你应该有一个eurobet帐户才能看到这个页面

多谢各位

我的尝试示例:

browser.switch_to_frame(browser.find_element(By.XPATH,'//iframe[@id="iframeGioco"]'))

browser.find_element(By.XPATH,"//div[@class='rounded-corners no-highlight ftl-error-buttonise absolute-horz-center']").click()
注:奇怪的是,我没有得到像“NoTouchElement”这样的错误,我什么也没有得到,所以我认为元素被找到了,但由于某种原因,单击不起作用


单击的按钮是IMG中的“确定”按钮。

单击
OK
div元素,该元素位于
iframe

诱导
WebDriverWait
()和
frame\u变为可用,并切换为可用()

诱导
WebDriverWait
()和
元素可点击
()并遵循
Xpath

WebDriverWait(browser,20).until(EC.frame_to_be_available_and_switch_to_it((By.ID,"iframeGioco")))
WebDriverWait(browser,20).until(EC.element_to_be_clickable((By.XPATH,"//div[text()='OK']"))).click()

您需要添加以下库

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

更新

诱导Javascript执行器单击

WebDriverWait(browser,20).until(EC.frame_to_be_available_and_switch_to_it((By.ID,"iframeGioco")))
browser.execute_script("arguments[0].click();", WebDriverWait(browser,20).until(EC.presence_of_element_located((By.XPATH,"//div[contains(.,'OK')]"))))

单击
OK
div元素,该元素位于
iframe

诱导
WebDriverWait
()和
frame\u变为可用,并切换为可用()

诱导
WebDriverWait
()和
元素可点击
()并遵循
Xpath

WebDriverWait(browser,20).until(EC.frame_to_be_available_and_switch_to_it((By.ID,"iframeGioco")))
WebDriverWait(browser,20).until(EC.element_to_be_clickable((By.XPATH,"//div[text()='OK']"))).click()

您需要添加以下库

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

更新

诱导Javascript执行器单击

WebDriverWait(browser,20).until(EC.frame_to_be_available_and_switch_to_it((By.ID,"iframeGioco")))
browser.execute_script("arguments[0].click();", WebDriverWait(browser,20).until(EC.presence_of_element_located((By.XPATH,"//div[contains(.,'OK')]"))))

您可以尝试使用JS单击,因为它的工作方式不同

Webdriver的工作方式与我们/用户的手动方式相同。如果元素未启用,即使用户可以在页面上看到它,它也不会单击,而JS是客户端脚本,它直接与浏览器对话(借助内置解释器)

请尝试以下代码

driver.execute_script("arguments[0].click();", webElement)

您可以尝试使用JS单击,因为它的工作方式不同

Webdriver的工作方式与我们/用户的手动方式相同。如果元素未启用,即使用户可以在页面上看到它,它也不会单击,而JS是客户端脚本,它直接与浏览器对话(借助内置解释器)

请尝试以下代码

driver.execute_script("arguments[0].click();", webElement)


您收到的错误消息是什么?奇怪的是,我没有收到任何错误,但单击不起作用。因此,我认为元素已找到,请尝试使用JS-->单击。驱动程序。执行_脚本(“参数[0]。单击();”,webElement)。这将清除元素是否正在接收单击。不用等就试试看。否则它可能会在等待时失败谢谢你,我现在就尝试,并让你知道,你的帮助很感谢。因为我不知道如何为你感到遗憾,它与javascript一起工作。execute_script(),我还需要两个代表来更新你的答案:(,我能为您做些什么?您收到的错误消息是什么?奇怪的是,我没有收到任何错误,但单击不起作用。因此我认为元素已找到。请尝试使用JS-->.driver.execute_脚本(“参数[0]。单击();”,webElement)。这将清除元素是否收到单击。请立即尝试。否则它可能会在等待时失败。谢谢您,我现在尝试并让您知道,您的帮助已收到感谢。因为我不知道如何对您表示遗憾,它使用了javascript。execute_script(),我还需要两个代表来更新您的答案:(,我能为您做些什么?我得到了“TimeoutException”@alessiaresto:你也试过第二个了吗?在Ori下,如果两个示例都抛出了
TimeoutException
,你也可以尝试调用
WebDriverWait
上的
presence\u of_element\u located
,而不是
element\u to\u clickable
,这可能会有所不同。它可以正常工作,也可以禁用,但是元素没有被有效单击。@alessiaresto:你能试试更新一个元素并告诉我我得到“TimeoutException”的状态吗@alessiaresto:你也试过第二个了吗?在Ori下,如果两个示例都抛出了
TimeoutException
,你也可以尝试调用
WebDriverWait
上的
presence\u of_element\u located
,而不是
element\u to\u clickable
,这可能会有所不同。它可以正常工作,也可以禁用,但是元素没有被有效地点击。@alessiaresto:你能试试更新一个并让我知道状态吗?你明白为什么JS和标准的“点击”可以工作吗不是吗?@Nuclearz原因是webdriver的工作方式与我们/用户的手动方式相同。如果未启用元素,即使用户可以在页面上看到它,它也不会单击,而JS是客户端脚本,它直接与浏览器对话(借助内置解释器)@Muzzamil关于webdriver work vs JSclick的评论,如果附加到答案中,将使其成为一个很好的答案,并将对社区有所帮助。@DebanjanB感谢您的建议。我已将其添加到我的答案中。您理解为什么JS与标准“click”一起工作吗不是吗?@Nuclearz原因是webdriver的工作方式与我们/用户的手动方式相同。如果未启用元素,即使用户可以在页面上看到它,它也不会单击,而JS是客户端脚本,它直接与浏览器对话(借助内置解释器)@Muzzamil关于webdriver work vs JSclick的评论,如果附加到答案中,将使其成为一个很好的答案,并将对社区有所帮助。@DebanjanB感谢您的建议。我已将其添加到我的答案中。