Javascript 如何使用selenium驱动程序单击元素?

Javascript 如何使用selenium驱动程序单击元素?,javascript,python,selenium,beautifulsoup,Javascript,Python,Selenium,Beautifulsoup,我一直在尝试使用selenium来抓取bookmyshow网站的一个网页。加载页面时,将出现2个弹出窗口。在这两种情况下,我们必须单击所需的按钮来关闭它们。当我试图找到这些元素时,我得到了一个错误。我使用sleep()使驱动程序完全加载页面。但是,我仍然不能这样做 代码是: from bs4 import BeautifulSoup import requests from selenium import webdriver from time import sleep s = requests

我一直在尝试使用selenium来抓取bookmyshow网站的一个网页。加载页面时,将出现2个弹出窗口。在这两种情况下,我们必须单击所需的按钮来关闭它们。当我试图找到这些元素时,我得到了一个错误。我使用sleep()使驱动程序完全加载页面。但是,我仍然不能这样做

代码是:

from bs4 import BeautifulSoup
import requests
from selenium import webdriver
from time import sleep
s = requests.session()
driver = webdriver.Chrome('F:\chromedriver')
driver.get("https://in.bookmyshow.com/booktickets/VMAX/2061")
sleep(40)
e2 = driver.find_element_by_class_name('wzrkPPwarp')
e2.click()
print("done")
e1 = driver.find_element_by_class_name('No thanks')
e1.click()

element = driver.find_element_by_class_name('__buytickets')
element.click()
element1 = driver.find_element_by_class_name('rem-seats')
print(element1.text)
我得到的结果是:

NoSuchElementException: Message: no such element: Unable to locate element: {"method":"class name","selector":"wzrkPPwarp"}
  (Session info: chrome=64.0.3282.140)
  (Driver info: chromedriver=2.33.506120 (e3e53437346286c0bc2d2dc9aa4915ba81d9023f),platform=Windows NT 10.0.16299 x86_64)
html内容为:(可通过javascript加载)

.wzrk覆盖{背景色:rgba(0,0,0,15);位置:固定;左:0;右:0;顶部:0;底部:0;z索引:10000}。wzrk隐藏{显示:无}。wzrk警报{背景色:#fbfbfb;边框:1px实心#f0f0;字体系列:Arial,无衬线;宽度:346px;填充:15px 15px 5px;边框半径:6px;文本对齐:中心;位置:固定;右:20px;顶部:20px;左侧:0;顶部:0;溢出:隐藏;z索引:9999}@媒体屏幕和(最大宽度:540px){.wzrk警报{宽度:自动;边缘:自动0;顶部:35%;左侧:15px;右侧:15px}.wzrk警报标题{颜色:#606060;字体大小:20px;宽度:250px;动画:无;文本对齐:居中;字体重量:700;边距:0自动10px;显示:块}.wzrk警报正文{颜色:#939393;字体大小:14px;字体重量:300;动画:无;边距底部:10px}.wzrk按钮容器按钮{背景色:#dbdbdb;颜色:#fff;边框:无!重要;框影:无!重要;最小宽度:130px;字体大小:14px;动画:无;字体重量:100;边框半径:3px;填充:8px 10px;边距:0 7px;光标:指针}。wzrk警报按钮:焦点{轮廓:0}。wzrk警报按钮:活动{背景:#5dc241}。wzrk警报按钮。确认{背景色:35px10px;f28046}.wzrk按钮容器按钮.wzrk按钮容器按钮{显示:内联块;动画:无;空白底部:-2px;-webkit过滤器:对比度(10%);过滤器:灰度(150%)}@-webkit关键帧显示Wizalert{0%{变换:缩放(.7);-webkit变换:缩放(.7)}45%{变换:缩放(1.05);-webkit变换:缩放(1.05)}80%{变换:缩放(.95);-webkit变换:缩放(.95)}100%{变换:缩放(1);-webkit变换:缩放(1) }}@-webkit关键帧hideWizAlert{0%{transform:scale(1);-webkit transform:scale(1)}100%{transform:scale(.5);-webkit transform:scale(.5)}。wiz show animate{animation:showWizAlert.3s}。wiz hide animate{animation:hideWizAlert.2s}获取个性化更新当我们发现您喜欢的有趣内容时,请通知我们!现在还不确定
在电影票上节省300卢比!使用MobiKwik钱包预订您最喜爱的电影票,并在您的交易金额上获得50%的超级现金!

如何执行此操作?如何单击这两个元素?

在对
iframe
中的任何元素执行任何操作之前,我们必须像这样切换到相应的

# To switch to frame
driver.switch_to.frame(driver.find_element_by_id("wiz-iframe"))

# Clicking on the element inside the frame
e2 = driver.find_element_by_xpath("//div[@class='wzrkPPwarp']//a")
e2.click()
# Switching back to main content
driver.switch_to_default_content()

# Then only we can access elements
e3 = driver.find_element_by_xpath("//button[@class='No thanks']")
e3.click()
一旦在iframe中的元素上执行了所需的操作,我们就将控件恢复为默认内容,以便在主窗口上执行如下操作

# To switch to frame
driver.switch_to.frame(driver.find_element_by_id("wiz-iframe"))

# Clicking on the element inside the frame
e2 = driver.find_element_by_xpath("//div[@class='wzrkPPwarp']//a")
e2.click()
# Switching back to main content
driver.switch_to_default_content()

# Then only we can access elements
e3 = driver.find_element_by_xpath("//button[@class='No thanks']")
e3.click()

谢谢。你能告诉我怎么点击“现在不”按钮吗?“现在不”按钮不在一个框架内。怎么点击?不客气!!:)幻影也一样吗?或者我们需要改变什么吗?我相信它是一样的。我已经更新了我的答案,请看一看