无法获取硒来查找元素并选择它

时间:2019-05-09 17:49:26

标签: python selenium-webdriver selenium-chromedriver

我正尝试自动登录一些法定帐户来检查其收入。

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

我尝试使用css_selector,xpath和name。我的问题是设置法定登录页面的方式,对于它的每个新实例,xpath都是NEW,因此无法通过该方法选择元素。

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并弄清楚我应该针对哪个元素以填写表格并提交吗?因为此时我已经尝试了一个多小时,但没有成功,因为没有任何效果。

1 个答案:

答案 0 :(得分:1)

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

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

    证明了这一点

    enter image description here

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

因此请确保:

  • 使用正确的选择器
  • 使用选择器以清晰独特的方式标识元素,这样您就可以确信自己正在使用所需的元素,即坚持使用Placeholder attribute < / p>

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

  • 您还可以考虑坚持使用Page Object Model pattern,这样您就可以在逻辑保持不变的情况下快速更新元素定位符。