首页 > 解决方案 > 带有多个引号的 CSS 选择器

问题描述

我无法找到一个唯一元素或一组元素来识别密码字段。我想尝试两个属性,但还没有弄清楚如何处理所有引用。通常,只有两套,我知道一套必须是单套的,另一套是双套的,但是如何管理例如三套?

(这是不可能的吗?我应该采取另一种方法,例如使用后代/孩子使用类似路径的方法吗?)

我正在开发的网站: 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 的想法更进一步,发现这篇文章是关于使用转义字符用于单引号和双引号,'以及"各自的。

password_field = driver.find_element_by_css_selector("input[gigya-expression:data-gigya-placeholder='"screenset.translations['PASSWORD_132128826476804690_PLACEHOLDER']"']")


使用 XPath编辑 2
解决方法 我还没有弄清楚如何处理 CSS 中的问题,但我已经使用 xpath 得到了我需要的东西。检查目标字段后,您可以右键单击 HTML 并复制 > 复制 XPath。

复制的 XPath:
//*[@id="gigya-login-form"]/div[2]/div[3]/div[2]/input

蟒蛇代码:
pswd_field = driver.find_element_by_xpath("//*[@id='gigya-login-form']/div[2]/div[3]/div[2]/input")

标签: csspython-3.xselenium-webdrivercss-selectors

解决方案


如果引用给您带来麻烦,请记住您可以转义任何内联字符\

例如,如果我要分配str="\"\"\"\""print(str)会打印出来""""


'这两个也是有效的字符串,因为"

gigya-expression:data-gigya-placeholder="screenset.translations['PASSWORD_132128826476804690_PLACEHOLDER']" 
gigya-expression:aria-label="screenset.translations['PASSWORD_132128826476804690_PLACEHOLDER']"

推荐阅读