Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中使用动态代码关闭弹出窗口_Python_Selenium - Fatal编程技术网

如何在python中使用动态代码关闭弹出窗口

如何在python中使用动态代码关闭弹出窗口,python,selenium,Python,Selenium,我是selenium的新手,python技能不高。 我只是想关闭这个页面上的弹出窗口 它出现在页面的左上方 弹出窗口不是问题,但我想知道如何解决这个问题 我用chrome检查了元素,并复制/粘贴了xpath。 使用代码 通过xpath(“xpath代码”)查找元素。单击() 它可以工作,弹出窗口关闭,但若我刷新页面并使用相同的代码重试,则不再工作,因为中的部分代码是动态的。我怎样才能解决这个问题? 我在谷歌上搜索了几个小时,但现在还没有找到解决办法 这就是元素 <a href="javas

我是selenium的新手,python技能不高。 我只是想关闭这个页面上的弹出窗口 它出现在页面的左上方 弹出窗口不是问题,但我想知道如何解决这个问题

我用chrome检查了元素,并复制/粘贴了xpath。 使用代码
通过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"