python - selenium click() 无法关闭弹出窗口

标签 python html selenium web-scraping

我一直在研究一个假的“投注机器人”以学习 selenium,但我无法关闭有时出现在我想从中获取赔率的网站上的弹出窗口。
我的方法是使用函数submit_bets() ;过滤后的游戏列表,格式为:

"League|team 1|team 2|Date|Probability in %|and prediction(1,X or 2)"
我从 here 获取数据.然后对于每场过滤后的比赛,我打开投注网站上的联赛投注页面,浏览那里的所有比赛以找到过滤后的比赛并获得真实赔率。对于filtered_games中的每个过滤游戏,我需要打开投注网站的页面,如果出现弹出窗口,则无法获取数据。
def submit_bets(filtered_games):
driver = webdriver.Chrome(PATH)
f=codecs.open("bets.txt","r", encoding='utf-8')
for line in filtered_games:
    l=line.split("|")
    print(l)
    driver.get(leagues_to_links.get(l[0]))
    scroll_down(driver)
    time.sleep(2)
    try:
        button = driver.find_element(By.XPATH, "/html/body/div[1]/div/section[2]/div[7]/div/div/div[1]/button" )
        driver.execute_script("arguments[0].scrollIntoView(true)", button)
        button.click()
    except:
        print("no button")
    games=driver.find_elements_by_class_name("events-list__grid__event")
    for i in games:
        game=str(i.text).split("\n")
        try:
            if forebet_teams_to_betano.get(l[1]) in game[2] and forebet_teams_to_betano.get(l[2]) in game[3]:
                print(game)
                if str(l[5]) == "1":
                    print("1")
                    print(str(game[7]))
                elif str(l[5]) == "X":
                    print("X")
                    print(str(game[9]))
                else:
                    print("2")
                    print(str(game[11]))
        except:
            print("")
In this link you can find the html of the page when the pop up shows up:
Github page with the html
In this link you can find the page files, you might have to refresh it sometimes to get the pop up
感谢您的时间,并随时留下任何提示以改进我的代码。

最佳答案

我的解决方案:

#Closing popup for Portugese betting site

from selenium import webdriver
from selenium.webdriver.firefox.options import Options

URL = "https://www.betano.pt/sport/futebol/ligas/17083r/"    

# Browser options
options = Options()
options.headless = True
firefox_profile = webdriver.FirefoxProfile()
firefox_profile.set_preference("browser.privatebrowsing.autostart", True)

browser = webdriver.Firefox(firefox_profile=firefox_profile)
browser.get(URL)

##### Copy this part into your own code #####
try:
    browser.find_element_by_xpath('//button[@class="sb-modal__close__btn uk-modal-close-default uk-icon uk-close"]').click() # Click pop-up close button
    print("Pop-up closed.")
except:
    print("Pop-up button not found.")
#########
关闭此弹出窗口:
enter image description here
请记住,这依赖于通过非常具体的类名找到按钮。您需要将最后的 try-except 调整为您自己的代码。

关于python - selenium click() 无法关闭弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64544281/

相关文章:

python - 根据Python中的字符串列表进行迭代

javascript - Div 不会停止滚动页面

jquery - Twitter Bootstrap 和 jQuery 2.0 兼容性

java - 如何通过 Java 使用 Selenium 将功能和选项传递到 Firefoxdriver

java - Selenium 上传文件 : file not found [docker]

python-social-auth 无法使用 GoogleOAuth2

python - 在 pandas/matplotlib/seaborn python 中使用自定义配色方案

html - 更改图像不透明度

java - Selenium WB驱动程序: Verify text passes when the text is cut off?

javascript - 重用javascript代码的Django最佳实践