在python中尝试过类似的操作,我想使用Selenium单击十字架。
driver.find_element_by_xpath("//span[contains(@onclick, 'parent.$WZRK_WR.closeIframe('60005','intentPreview');')]").click()
答案 0 :(得分:2)
Xpath Helper- https://chrome.google.com/webstore/detail/xpath-helper/hgimnogjllphhhkhlmebbmlgjoejdpjl?hl=en
如果xpath无效-那么您将得到xpath错误,如果找不到匹配项,则显示NULL。
注意-要检查元素属性,您仍然可以使用F12,它只是所有浏览器的默认检查元素,然后检查属性并创建自己的xpath并尝试。
Xpath语法
/ / tagname[@attribute-name=’value1′]
,如果您不确定标签名称,那么不用担心,您也可以尝试使用*
//*[@attribute-name='value1']
答案 1 :(得分:2)
您正在处理iframe。请按照以下步骤操作:
您需要将控件切换到iframe。
然后执行您的操作(在本例中为“单击关闭”)。
将控件切换回默认框架。
答案 2 :(得分:2)
根据您共享的 HTML ,单击表示为 X 的元素,首先,您需要在切换到浏览器的同时诱导 WebDriverWait 。 <iframe>
并再次诱使 WebDriverWait 使其可单击所需的元素,您可以使用以下解决方案:
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[@id='wiz-iframe-intent']")))
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='CT_Interstitial']//span[@class='CT_InterstitialClose']"))).click()
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
答案 3 :(得分:1)
尝试使用此xPath
:
//div[@id = 'contentDiv']/div/div/span[@class = 'CT_InterstitialClose']
代码:
close_btn = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//div[@id = 'contentDiv']/div/div/span[@class = 'CT_InterstitialClose']")))
close_btn.click()
导入:
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By
说明:
WebDriverWait
用于等待元素可单击,然后单击它。在此示例中,WebDriverWait
将等待至少10秒钟,直到元素可以单击为止。
PS: ,正如我在屏幕快照中看到的那样,您的元素可能位于iframe
中。这意味着您必须首先切换到此iframe
,才能与其中的元素进行交互。它的代码示例如下:
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH, "XPATH_TO_FRAME")))
# do stuff
close_btn = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//div[@id = 'contentDiv']/div/div/span[@class = 'CT_InterstitialClose']")))
close_btn.click()
# switch back to default content
driver.switch_to.default_content()
答案 4 :(得分:1)
您可以尝试使用此 css_selector :
div.CT_InterstitialContents+span.CT_InterstitialClose[onclick]
Xpath 为:
//div[@class='CT_InterstitialContents']/following-sibling::span[@class='CT_InterstitialClose' and onclick]
答案 5 :(得分:0)
您可以使用span的类名称编写xpath。请参考下面的示例。
//span[@class='amountCharged']