无法让selenium查找元素并选择i

2024-06-12 01:53:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试自动登录一些quora帐户,以检查他们的收入

我被困在第一部分:登录屏幕

我尝试过使用css_选择器、xpath和名称。我的问题是quora登录页面的设置方式,xpath对于它的每个新实例都是新的,因此没有办法通过它来选择元素

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument('headless')
options.add_argument('window-size=1200x600')

driver = webdriver.Chrome(options=options)

driver.get('https://quora.com')

driver.implicitly_wait(3)

email = driver.find_element_by_css_selector('input[type=password]')
password = driver.find_element_by_css_selector('input[type=password]')
login = driver.find_element_by_css_selector('input[value="Login"]')

email.send_keys('')
password.send_keys('')

driver.get_screenshot_as_file('main-page.png')

这就是我目前所拥有的

有人能看看www.quora.com,找出我应该针对哪一个元素来填写表格并提交吗?因为我已经尝试了一个多小时,但没有成功,因为没有任何效果


Tags: add元素inputbydriverpasswordelementfind
1条回答
网友
1楼 · 发布于 2024-06-12 01:53:12

你的问题出在错误的选择器上

  1. 您有input[type=password]选择器2次,这是不正确的,因为您应该为电子邮件和密码输入使用不同的选择器
  2. 选择器匹配2个元素,如Chrome Developer Tools所示

    enter image description here

    因此,Selenium尝试将密钥发送到第一个不可见/不可交互的密钥

因此,请确保:

  • 使用正确的选择器
  • 使用选择器以清晰和独特的方式标识元素,这样您将有信心使用您期望的元素,即坚持使用Placeholderattribute

    email = driver.find_element_by_css_selector('input[Placeholder=Email]')
    password = driver.find_element_by_css_selector('input[Placeholder=Password]')
    
  • 在测试开发期间,最好使用“普通”浏览器,以便您可以观察测试运行时发生的情况

  • <>你也可以考虑粘贴Page Object Model pattern,这样你就可以快速更新元素定位器,同时逻辑保持不变。李>

相关问题 更多 >