问题:如何使用 Selenium 和 xpath 在 Google 登录页面中选择电子邮件或电话字段?

我在这个页面:Google Drive Login

想要选择此输入字段:

有问题的输入字段

当我使用输入字段的 xpath 时:

//*[@id="identifierId"]

或者

/html/body/div[1]/div[1]/div[2]/div/div[2]/div/div/div[2]/div/div[1]/div/form/span/section/div/div/div[1]/div/div[1]/div/div[1]/input

我还有一个。

通常,当元素嵌套在 iframe 中时会发生这种情况,但在这种情况下不会。或者至少我找不到有问题的 iframe。请帮我理解为什么。

解答

访问 Google Drive 登录页面时的 Email 或 Phone 字段与 SMile 登录期间的 Email 或 Phone 字段没有什么不同。

要将_字符序列_发送到元素,您可以使用以下任一定位器策略:

  • 使用id:
driver.find_element_by_id("identifierId").send_keys("AturSams")
  • 使用css_selector:
driver.find_element_by_css_selector("input#identifierId").send_keys("AturSams")
  • 使用xpath:
driver.find_element_by_xpath("//input[@idu003d'identifierId']").send_keys("AturSams")

理想情况下,要将 character sequence 发送到您需要为element_to_be_clickable()诱导WebDriverWait的元素,您可以使用以下任一定位器策略:

  • 使用ID:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.ID, "identifierId"))).send_keys("AturSams")
  • 使用CSS_SELECTOR:
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[@idu003d'identifierId']"))).send_keys("AturSams")
  • 注意:您必须添加以下导入:
从 selenium.webdriver.support.ui 导入 WebDriverWait
从 selenium.webdriver.common.by 导入
从 selenium.webdriver.support 导入 expected_conditions 作为 EC

参考文献

您可以在以下位置找到一些相关的详细讨论:

  • 在java中使用selenium webdriver登录Gmail

  • 在 Python 中使用 Selenium 登录 gmail

  • Selenium 测试脚本通过新的 ajax 登录表单登录到 google 帐户

Logo

Python社区为您提供最前沿的新闻资讯和知识内容

更多推荐