无法使用selenium和Python连接到网页

问题描述 投票:1回答:3

我正在尝试连接到特定的网页,但它没有点击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>

用户名和密码是写的,它们是正确的

python selenium web-scraping webdriver webdriverwait
3个回答
1
投票

看起来你非常接近。也许Cookies消息栏是障碍,你可以接受cookie或滚动连接按钮进入视图,你可以使用以下解决方案:

  • 代码块: 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
  • 浏览器快照:

cookies


0
投票

以下css选择器应唯一标识您要查找的按钮:

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

0
投票

这对我有用:

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")]")
© www.soinside.com 2019 - 2024. All rights reserved.