【发布时间】:2021-12-26 07:20:43
【问题描述】:
我无法找到一个唯一元素或一组元素来识别密码字段。我想尝试两个属性,但还没有弄清楚如何处理所有引用。通常只有两套,我知道一套必须是单套的,另一套是双套的,但是如何管理,例如,三套?
(这是不可能的吗?我应该采取另一种方法,例如使用后代/孩子使用类似路径的方法吗?)
我正在开发的网站: https://myibd.investors.com/secure/signin.aspx?eurl=https://marketsmith.investors.com/
到目前为止我的代码:
import os
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# create driver object and launch the webpage
driver = webdriver.Chrome()
wait = WebDriverWait(driver, 20)
driver.get("https://myibd.investors.com/secure/signin.aspx?eurl=https://marketsmith.investors.com/")
# switch to the iframe we need
driver.switch_to.frame(driver.find_element_by_css_selector("iframe[id = 'signin-iframe']"))
# create variable for the login field
login_field = driver.find_element_by_css_selector("input[name='username'][data-gigya-placeholder='Email']")
# variable for password field
pswd_field = driver.find_element_by_css_selector()
我想试验的两个标签和值:
gigya-expression:data-gigya-placeholder="screenset.translations['PASSWORD_132128826476804690_PLACEHOLDER']"
gigya-expression:aria-label="screenset.translations['PASSWORD_132128826476804690_PLACEHOLDER']"
编辑 1
没有成功的两个新尝试:
1.) 我尝试使用反斜杠 \ 来转义值内的引号,如下所示。
password_field = driver.find_element_by_css_selector("input[gigya-expression:data-gigya-placeholder='\"screenset.translations[\'PASSWORD_132128826476804690_PLACEHOLDER\']\"]")
2.) 我进一步了解了@Laif 的想法,并找到了this 关于在单引号和双引号中使用转义字符的文章,分别为' 和"。
password_field = driver.find_element_by_css_selector("input[gigya-expression:data-gigya-placeholder='"screenset.translations['PASSWORD_132128826476804690_PLACEHOLDER']"']")
编辑 2
使用 XPath 的解决方法
我还没有弄清楚如何处理 CSS 中的问题,但我已经使用 xpath 得到了我需要的东西。检查目标字段后,您可以右键单击 HTML 并复制 > 复制 XPath。
复制的 XPath://*[@id="gigya-login-form"]/div[2]/div[3]/div[2]/input
python代码:pswd_field = driver.find_element_by_xpath("//*[@id='gigya-login-form']/div[2]/div[3]/div[2]/input")
【问题讨论】:
标签: css python-3.x selenium-webdriver css-selectors