python - Selenium 找不到元素

标签 python selenium xpath

我正在尝试编写代码以使用 selenium 自动创建 gmail。我要查找的项目是以下网址中输入的名字:

https://accounts.google.com/signup/v2/webcreateaccount?service=mail&continue=https%3A%2F%2Fmail.google.com%2Fmail%2F&flowName=GlifWebSignIn&flowEntry=SignUp

我使用了 wait 但它返回了一个 TimeoutException 错误。 另外,假设我想使用隐式等待,我该怎么做?

谢谢

class BotCreator:

    def __init__(self, firstname, lastname):
        self.firstname = firstname
        self.lastname = lastname
        self.driver = webdriver.Firefox(executable_path=r'A:\Python Projects\The InstaBOT/geckodriver')

    def shutdown(self):
        self.driver.close

    def gmail_creator(self, n_bots):
        for n in range(n_bots):
            global email
            email = {}
            driver = self.driver
            wait = WebDriverWait(driver, 10)
            driver.get('https://www.google.com/intl/en-GB/gmail/about/')
            driver.find_element_by_xpath('//a[@title="Create an account"]').click()
            wait.until(ec.new_window_is_opened(driver.window_handles))
            after = driver.window_handles[1]
            driver.switch_to.window(after)
            element = wait.until(ec.element_to_be_clickable((By.XPATH, '//input[@id="firstName"]')))
            element.send_keys('awsd')

        return email

gmail_t = BotCreator('John', 'Hoffinsky')
gmail_t.gmail_creator(1)

最佳答案

该页面上实际上有几 (4) 个元素具有相同的 XPath。 尝试使用具有以下 XPath 的特定一个:

(//a[@title="Create an account"])[1]

您的 XPath 使用 Chrome 扩展 ChroPath 返回 4 个元素。


关于隐式等待的问题: 您已经在使用隐式等待。隐式等待设置告诉 Selenium 轮询指定的时间量,直到元素可用。如果需要,您可以更改超时:

driver.implicitly_wait(15)

link可能会有帮助。

关于python - Selenium 找不到元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58082116/

相关文章:

python - 如何分离xpath语句的输出

java - 消除网页上的重复链接并避免链接过时错误

python - 白底跟踪白球(Python/OpenCV)

java - 未显示所有值

Python - 当识别出重复项时,集合或卡住集合采用哪个对象?

java - java中使用Selenium自动上传图像到instagram

r - 在 R 中查找 XPath 节点的名称

java - 如何使用 Selenium ChromeDriver 从 span 类获取文本

python - 版本号 (vX.X.X) 的正则表达式不起作用

python - 将 PyGTK 转换为 exe