如何在python中使用动态代码关闭弹出窗口
我是selenium的新手,python技能不高。 我只是想关闭这个页面上的弹出窗口 它出现在页面的左上方 弹出窗口不是问题,但我想知道如何解决这个问题 我用chrome检查了元素,并复制/粘贴了xpath。 使用代码如何在python中使用动态代码关闭弹出窗口,python,selenium,Python,Selenium,我是selenium的新手,python技能不高。 我只是想关闭这个页面上的弹出窗口 它出现在页面的左上方 弹出窗口不是问题,但我想知道如何解决这个问题 我用chrome检查了元素,并复制/粘贴了xpath。 使用代码 通过xpath(“xpath代码”)查找元素。单击() 它可以工作,弹出窗口关闭,但若我刷新页面并使用相同的代码重试,则不再工作,因为中的部分代码是动态的。我怎样才能解决这个问题? 我在谷歌上搜索了几个小时,但现在还没有找到解决办法 这就是元素 <a href="javas
通过xpath(“xpath代码”)查找元素。单击()
它可以工作,弹出窗口关闭,但若我刷新页面并使用相同的代码重试,则不再工作,因为中的部分代码是动态的。我怎样才能解决这个问题?
我在谷歌上搜索了几个小时,但现在还没有找到解决办法
这就是元素
<a href="javascript:;" onclick="MAX_simplepop_8afcd70d('close'); return false;">x</a>
注释后的代码可以工作,但非常简单,我不认为它可以一直工作
我只想知道如何使用selenium管理页面中的动态代码。试试这个。希望每次运行时都能正常工作
driver.find_element_by_xpath('//div[@class="openX_interstitial"]/div[1]/a').click()
让我知道这是否适合您。对于您的情况,元素中有唯一的类名,可以使用该类名轻松查找元素,而无需使用dynamic元素
driver.find_element_by_xpath('//div[@class="openX_interstitial"]/div[1]/a').click()
但在这种情况下,您特别想要尝试处理动态路径,然后您可以尝试
driver.find_element_by_xpath('//div[contains(@id, "MAX_")]/div[1]/a')
或
这是一个带有is_display()检查的版本
我已经使用了class属性,它每次都是静态的,而不是Id。如果我的代码有效,请接受它。是的。你的代码有效,我想我已经理解了它的结构//div[@class=“open…”表示类的行,/div[1]表示类中的第一个模块,/a表示模块中的函数行。要接受这一点,您必须在我的代码上单击“接受”按钮。谢谢mate,您的代码也可以工作,而且更通用。为什么在类或id之前有@?“包含”和“以开头?”“si python语法,对吗?字符@用于获取元素的任何属性,如类或id。包含
,以
开头不是python而是Xpath函数。您可以阅读更多有关Xpath语法和函数的信息
driver.find_element_by_xpath('//div[contains(@id, "MAX_")]/div[1]/a')
driver.find_element_by_xpath('//div[starts-with(@id, "MAX_")]/div[1]/a')
// check if popup class is displayed.
popupelement = driver.find_element(By.CLASS_NAME, 'openX_int_closeButton')
if popupelement.is_displayed():
print "Popup class is displayed";
// safe-wait to be clickable
wait = WebDriverWait(driver, 10)
xbutton = wait.until(EC.element_to_be_clickable((By.XPATH, '//div[@id='openXHackFoo']//div[@class='openX_int_closeButton']/a)))
xbutton.click();
else:
print "Popup page is not displayed"