Python 如何使用Selenium和xpath选择Google登录页面中的电子邮件或电话字段?
我在这一页:Python 如何使用Selenium和xpath选择Google登录页面中的电子邮件或电话字段?,python,selenium,xpath,css-selectors,google-home,Python,Selenium,Xpath,Css Selectors,Google Home,我在这一页: 要选择此输入字段: 使用输入字段的xpath时: //*[@id="identifierId"] 或 我知道娜达 通常,当元素嵌套在iframe中时会发生这种情况,但在本例中不会发生这种情况。 或者至少我找不到有问题的iframe。请帮我理解为什么 from selenium import webdriver from selenium.webdriver.common.keys import Keys import time driver = webdri
要选择此输入字段:
使用输入字段的xpath时:
//*[@id="identifierId"]
或
我知道娜达
通常,当元素嵌套在iframe中时会发生这种情况,但在本例中不会发生这种情况。
或者至少我找不到有问题的iframe。请帮我理解为什么
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
driver = webdriver.Chrome('./chromedriver.exe')
driver.get("https://accounts.google.com/signin/v2/identifier?service=wise&passive=true&continue=http%3A%2F%2Fdrive.google.com%2F%3Futm_source%3Den&utm_medium=button&utm_campaign=web&utm_content=gotodrive&usp=gtd<mpl=drive&flowName=GlifWebSignIn&flowEntry=ServiceLogin")
print(driver.title)
time.sleep(7)
search_bar = driver.find_element_by_xpath("//*[@id=\"identifierId\"]")
search_bar.send_keys("some text")
time.sleep(7000)
driver.close()
它的工作原理是这样的
输出:
访问Google Drive登录页面时的电子邮件或电话字段与GMail登录时的电子邮件或电话字段没有区别
要向元素发送字符序列,可以使用以下任一方法:
- 使用
:id
driver.find_element_by_id("identifierId").send_keys("AturSams")
- 使用
:css\u选择器
driver.find_element_by_css_selector("input#identifierId").send_keys("AturSams")
- 使用
:xpath
driver.find_element_by_xpath("//input[@id='identifierId']").send_keys("AturSams")
理想情况下,要向元素发送字符序列,您需要将
元素归纳为可点击()
,您可以使用以下任一选项:
- 使用
:ID
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.ID, "identifierId"))).send_keys("AturSams")
- 使用
:CSS\u选择器
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input#identifierId"))).send_keys("AturSams")
- 使用
:XPATH
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@id='identifierId']"))).send_keys("AturSams")
- 注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
工具书类 您可以在以下内容中找到一些相关的详细讨论:
NoTouchElementException
错误是什么。我通常在元素位于iframe中时获取它们。是否添加了睡眠?是的,当然。:)你是说它现在对你有效吗?奇怪的是:D我做了同样的事情。@atracams不可靠的time.sleep()
对HTML中的元素呈现有一定影响。因此,可以避免使用Never use time.swillp always buse显式等待的差异
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC