繁体   English   中英

Python Selenium,在按钮中找到span

[英]Python Selenium, find span in the button

我浪费了很多时间来弄清楚为什么司机不想点击这个按钮。 我相信有人可以帮助我解决这个问题。 在此处输入图像描述

我需要点击“输入密码”。

我很累。 我一直试图找出一个超过10小时的原因,但我仍然不能。 我检查了很多关于 Selenium、xpath、span 等的线程。我尝试使用 execute_script() 启动此查找器,但它仍然无法也找不到此按钮并单击此按钮。

网站: https://e.mail.ru/login?email=

 self.driver.find_element_by_id("//span[@class='inner-1-1-75 innerTextWrapper-1-1-76']") "//span[contains(text(), 'Enter password')]//parent::button" /span[contains(.,'Enter password')]

我检查了网站。 而且我认为这并不难。 你使用了错误的方法。 您需要使用 find_element_by_xpath 方法。

我是 ruby 开发人员,所以想编写 ruby 脚本。

next_button = driver.find_element(:xpath, "//button[@data-test-id='next-button']")
driver.execute_script("arguments[0].click()", next_button)

在我看来,您的 xpath 不正确

xpath = "//button[@data-test-id='next-button']"

我认为这就足够了

以下是用 python 脚本编写的完整答案

next_button = self.driver.find_element_by_xpath("//button[@data-test-id='next-button']")
self.driver.execute_script("arguments[0].click()", next_button)
driver.get('https://e.mail.ru/login?email=')

frame = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.TAG_NAME, "iframe"))
)

driver.switch_to_frame(frame)

password = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.XPATH, "//button[@data-test-id=\"next-button\"]"))
)
password.click()
driver.switch_to_default_content()

它在 iframe 内部,您应该切换到它与它进行交互,一旦完成,您必须通过使用 switch 切换回外部框架到默认内容,以便能够再次与 iframe 之外的元素交互。

也使用显式等待来避免加载问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM