首页 文章

如何通过Selenium和Python单击Instagram中的“Not Now”按钮

提问于
浏览
0

我正在尝试使用我正在编码的“instagram bot”登录Instagram . 我已经通过登录屏幕,经过“获取应用程序”屏幕以及它想要打开通知的方式 . 这两个选项是“开启”和“不是现在” . 我试图使用与以前相同的方法点击“不是现在”,但它不会工作 . 代码(在firefox上使用inspect元素)说

<button class="aOOlW   HoLwm " tabindex="0">Not Now</button>

我尝试过使用类代码

notNowButton = driver.find_element_by_xpath("//a[@class='aOOlW HoLwm']")
# or
notNowButton = driver.find_element_by_xpath("//a[@tabindex='0']")

但这也不起作用 . 有帮助吗?

通知:

2 回答

  • 0

    看起来你非常接近 .

    在你第一次代码试用中:

    driver.find_element_by_xpath("//a[@class='aOOlW HoLwm']")
    

    <tag> 不是 <a> 标签,而是 <button> 标签 . 所以改变它如下就行了 .

    driver.find_element_by_xpath("//button[@class='aOOlW   HoLwm ']")
    

    现在,所需的元素是JavaScript启用元素,因此您必须引导WebDriverWait才能使元素可单击,并且以下行将完美地工作:

    WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//button[@class='aOOlW   HoLwm ']"))).click()
    

    作为替代方案,您也可以使用cssSelector,如下所示:

    WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.aOOlW.HoLwm"))).click()
    

    Note :您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
  • 0

    使用 WebDriverWait 和Xpath匹配文本 Not Now

    from selenium import webdriver
    from selenium.webdriver.support.ui import WebDriverWait 
    
    notNowButton = WebDriverWait(driver, 15).until(
        lambda d: d.find_element_by_xpath('//button[text()="Not Now"]')
    )
    notNowButton .click()
    

相关问题