问题描述
你好 Selenium (python) 专家。 我在 Mailinator 中有 2 封电子邮件,我在其中发送了一些电子邮件模板。 我将这些电子邮件按如下方式调用,以便于解释我的问题:
- email1@mailinator.com
- email2@mailinator.com
我正在向两封电子邮件发送完全相同的内容,我正在尝试使用 selenium 定位电子邮件并将其打开。
现在使用 selenium,我使用 XPATH 来定位电子邮件,但我意识到这个 XPATH 是一个动态链接,这意味着对于我发送的每封电子邮件,Mailinator 都会生成一个随机数附加到电子邮件 XPATH。例如:
email1 = //*[@id="row_email1-1626692999-529929"]/td[2]
email2 = //*[@id="row_email2-1628652999-526029"]/td[2]
我想知道是否有一个选项可以循环遍历 Mailinator 的正文并定位包含 XPATH email1
或 email2
的所有电子邮件并打开它们。
我是硒的新手,所以如果有什么不清楚或需要更多信息,请告诉我
非常感谢你们
编辑: 这是在全屏模式下运行浏览器的 Web 驱动程序配置,但它以小尺寸启动
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--start-maximized')
chrome_options.add_argument('--disable-gpu')
driver = webdriver.Chrome(PATH,chrome_options=chrome_options)
wait = webdriverwait(driver,10)
driver.get('https://mailinator.com')
解决方法
您可以在 xpath 中使用 OR
,如下所示:
//*[@id='row_email1-1626692999-529929' or @id='row_email2-1628652999-526029']/td[2]
或者更好的方法是使用 find_elements
为此,我假设以下 xpath :
//*[contains(@id,'row_email')]/td[2]
将代表所有电子邮件链接。
示例代码:
for emails in driver.find_elements(By.XPATH,"//*[contains(@id,'row_email)']/td[2]")
emails.click() or whatever you wanna do here with single mail link