【问题标题】:Cannot connect to webpage using selenium and Python无法使用 selenium 和 Python 连接到网页
【发布时间】:2019-03-24 21:25:24
【问题描述】:

我正在尝试连接到特定网页,但它没有点击 Login 按钮:

browser.get('https://www.tsago.gr/eshop/account')
print('Browser Opened')
username = browser.find_element_by_id('email')
username.send_keys(email)
password = browser.find_element_by_id('password')

password.send_keys(pwd)
time.sleep(2)
sing_in = browser.find_element_by_xpath('//*[@class="btn btn-primary"]')
sing_in.click()
print('Login Clicked')

我尝试通过 css、名称等查找元素,但我不知道为什么不点击按钮登录

html部分如下

<div class="span3 float-right" style="float:right;">                                   
   <button type="submit" class="btn btn-primary">Connect</button>
</div>

用户名和密码写对了

【问题讨论】:

  • 试试sing_in = browser.find_element_by_xpath('//button[@type="submit"]')
  • No nothing.. 有没有办法通过代码点击回车?而是通过单击按钮?也许它需要重点?

标签: python selenium web-scraping webdriver webdriverwait


【解决方案1】:

看来你已经很接近了。或许 Cookies 消息栏 是障碍,您可以接受 cookie 或滚动 Connect 按钮进入视图,您可以使用以下解决方案:

  • 代码块:

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    options = webdriver.ChromeOptions() 
    options.add_argument("start-maximized")
    options.add_argument("--disable-extensions")
    # options.add_argument('disable-infobars')
    browser = webdriver.Chrome(chrome_options=options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
    browser.get('https://www.tsago.gr/eshop/account')
    print('Browser Opened')
    WebDriverWait(browser, 30).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "input#email[name='email']"))).send_keys("Nikos")
    browser.find_element_by_css_selector("input#password[name='password']").send_keys("Nikos")
    browser.execute_script("window.scrollBy(0,250)", "");
    browser.find_element_by_css_selector("div.control-group div.span3 button.btn.btn-primary").click()
    print('Login Clicked')
    
  • 控制台输出:

    Browser Opened
    Login Clicked
    
  • 浏览器快照:

【讨论】:

    【解决方案2】:

    以下 css 选择器应该唯一标识您正在寻找的按钮:

    driver.find_element_by_css_selector('div.span3.float-right > button')
    

    【讨论】:

      【解决方案3】:

      这对我有用:

      driver.find_element_by_css_selector('div.span3 > button[type="submit"]').click()
      

      通常,您应该确保在编码之前识别正确的元素。为此 - 使用 devTools(chrome/firefox 上的 f12),并在“控制台”选项卡中运行您的查询

      用于xpath识别尝试$x,即:$x('//button[@type="submit"]')

      对于 css 选择器使用 $$ 像这样:$$("div.someClass#someID")

      您可以将鼠标悬停在结果上,找到的元素会突出显示

      编辑: 我注意到你在使用 css 选项时遇到了问题,你也可以试试

      driver.find_element_by_xpath('//div[contains(@class,"span3")]/button[contains(@class,"btn-primary")]")
      

      【讨论】:

        猜你喜欢
        • 2020-09-23
        • 2017-10-11
        • 2013-10-26
        • 1970-01-01
        • 1970-01-01
        • 2017-10-19
        • 2018-01-21
        • 1970-01-01
        • 2013-09-30
        相关资源
        最近更新 更多