【问题标题】:Clicking visible close button inside a dialog [closed]单击对话框内的可见关闭按钮[关闭]
【发布时间】:2014-02-26 21:58:52
【问题描述】:

手头有潜在问题。我有一个覆盖表,它是在成功注册后出现的。我也尝试过 X 路径,但这无济于事(如识别它)。

现在我正在尝试让班级识别(完整的覆盖表单),然后单击表单上的“X”链接。然而问题在于复合类。

这是识别覆盖形式的完整类:

ui-dialog ui-widget ui-widget-content ui-corner-all registerModel-main-dialog ui-draggable signup_thanks

这是“X”链接的类:

ui-icon ui-icon-closethick

网站是http://www.saksoff5th.com/

【问题讨论】:

  • 如果您希望得到答案,那么您应该从您尝试控制的网页中发布相关的 Python 代码和相关的 HTML 片段。
  • 当您尝试与元素交互时会发生什么?是否抛出异常?
  • 请看代码。我使用的网站是 saksoff5th.com

标签: python selenium selenium-webdriver


【解决方案1】:

鉴于您的网站是http://saksoff5th.com,我可以为您提供工作代码。

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait

driver = webdriver.Firefox()
driver.get("http://www.saksoff5th.com/")

driver.implicitly_wait(10) # seconds

driver.find_element_by_css_selector(".sign-in > span").click()
driver.find_element_by_css_selector(".ui-dialog[style*='display: block'] .ui-icon-closethick").click()

# If you prefer explicit wait, you can do these
# WebDriverWait(driver, 10).until(lambda driver: driver.find_element_by_css_selector(".sign-in > span")).click()
# WebDriverWait(driver, 10).until(lambda driver: driver.find_element_by_css_selector(".ui-dialog[style*='display: block'] .ui-icon-closethick")).click()

由于您尚未提供代码,我猜您的代码可能存在两个问题:

  • 您没有使用单击前需要的 WebDriverWait,因为您的元素无法立即使用。
  • 还有两个类名相同的对话框,你需要找到可见的那个。

如果您对答案感到满意,请点赞this。否则请在下方提供反馈。

【讨论】:

  • 这是我得到的错误:- 文件“C:\Python27\lib\selenium\webdriver\remote\errorhandler.py”,第 164 行,在 check_response 中引发 exception_class(message, screen, stacktrace ) NoSuchElementException: 消息: u'无法定位元素: {"method":"css selector","selector":".ui-dialog[style*=\'display: block\'] .ui-icon-closethick" }';堆栈跟踪:
  • 这是我正在使用的代码。from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC browser = webdriver.Firefox() browser.get('saksoff5th.com') browser.find_element_by_partial_link_text('WELCOME').click() browser.switch_to_frame('loginModel') browser.find_element_by_xpath ("//*[@id='dwfrm_login_username']").send_keys('test80@rediffmail.com')
  • elem1 = browser.find_element_by_class_name('selectLogin') a = elem1.find_element_by_id('login1').click() browser.find_element_by_id('dwfrm_login_register').click() browser.switch_to_frame('registerModel ') browser.implicitly_wait(10) browser.find_element_by_id('dwfrm_profile_customer_firstname').send_keys('Hello') browser.find_element_by_id('dwfrm_profile_customer_lastname').send_keys('Sharma') browser.find_element_by_id('dwfrm_profile_customer_zippostalcode').send_keys(' 07302')
  • browser.find_element_by_id('dwfrm_profile_customer_emailconfirm').send_keys('test80@rediffmail.com') browser.find_element_by_id('dwfrm_profile_login_password').send_keys('Password0') browser.find_element_by_id('dwfrm_profile_login_passwordconfirm') .send_keys('Password0') browser.find_element_by_name('dwfrm_profile_confirm').click() browser.implicitly_wait(15) print('a') browser.find_element_by_css_selector(".ui-dialog[style*='display: block'] .ui-icon-closethick").click()
  • @user3337644:因为您需要在单击关闭按钮之前切换框架。 browser.switch_to_default_content()。您应该从一开始就在原始问题中发布所有内容(您的站点、代码、异常、您的步骤等),以避免浪费您自己的时间。
猜你喜欢
  • 2013-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-28
  • 1970-01-01
  • 2022-01-06
  • 2021-11-26
相关资源
最近更新 更多