href 內的鏈接不斷變化,但此 href 的 xpath 始終相同。如何點擊www.confirmationemail.com?
<div dir="ltr">
<p>exampleTEXT.</p>
<p><a href="www.confirmationemail.com" target="_blank">www.confirmationemail.com</a></p>
<p>exampleTEXT.</p>
<p>exampleTEXT,</p>
<p>exampleTEXT</p>
</div>
這是我正在處理的頁面:https ://www.minuteinbox.com/
流程如下:用從這里收到的郵件注冊一個網站,收到一封郵件,登錄到郵件,但是我不能點擊郵件內容中的鏈接。
from selenium import webdriver
from time import sleep
import config2 as cf
from selenium.webdriver.support.select import Select
import selenium.webdriver.support.ui as ui
from selenium.webdriver.common.keys import Keys
from asyncio import sleep
import time
driver = webdriver.Chrome("C:\\ChromeDriver\\chromedriver.exe")
url = "https://www.minuteinbox.com/"
url2 = "EXAMPLE.COM"
driver.get(url)
element = driver.find_element_by_xpath("XPATH").text
print(element)
time.sleep(4)
driver.execute_script("window.open('');")
driver.switch_to.window(driver.window_handles[1])
driver.get(url2)
sec = driver.find_element_by_xpath("XPATH")
sec.click()
devam = driver.find_element_by_xpath("XPATH")
devam.click()
ad = driver.find_element_by_xpath("XPATH")
ad.send_keys("deneme")
soyad = driver.find_element_by_xpath("XPATH")
soyad.send_keys("test")
eMail = driver.find_element_by_css_selector("#user_email")
eMail.send_keys(element)
eMail2 = driver.find_element_by_css_selector("#user_email_confirmation")
eMail2.send_keys(element)
sifre = driver.find_element_by_css_selector("#user_password")
sifre.send_keys("PASS")
sifre2 = driver.find_element_by_css_selector("#user_password_confirmation")
sifre2.send_keys("PASS")
buton = driver.find_element_by_css_selector("SELECT")
buton.click()
hesapol = driver.find_element_by_css_selector("SELECT")
hesapol.click()
sleep(2)
driver.switch_to.window(driver.window_handles[0])
time.sleep(7)
bas = driver.find_element_by_css_selector("#schranka > tr:nth-child(1)")
bas.click()
time.sleep(1)
time.sleep(1)
SD = driver.switch_to.frame(driver.find_element_by_css_selector("iframe#iframeMail"))
time.sleep(5)
SD = driver.find_element_by_xpath("//a[contains(@href,'minuteinbox')]").click
driver.switch_to.default_content()
sd = 我把它放在這里只是為了能夠把它寫在代碼部分
解決了
進口
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
bas = driver.find_element_by_css_selector("#schranka > tr:nth-child(1)")
bas.click()
time.sleep(3)
wait = WebDriverWait(driver, 10)
wait.until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR, "iframe[id='iframeMail']")))
print(driver.page_source)
link = driver.find_element_by_xpath("/html/body/div/p[2]/a")
link.click()
uj5u.com熱心網友回復:
正如您所提到的,該元素的 XPath 是恒定的。
因此,您可以基于常量 XPath 定位器獲取該元素并單擊它。像這樣的東西:
driver.find_element_by_xpath('the_constant_xpath').click()
UPD
你想被點擊的元素可以通過 XPath 定位。
但是,它位于 iframe 內,因此要訪問它,您必須先切換到該 iframe。
我還使您的定位器變得更好。
所以你的代碼可能是這樣的:
driver.switch_to.window(driver.window_handles[0])
time.sleep(5)
bas = driver.find_element_by_css_selector("td.from")
bas.click()
time.sleep(1)
driver.switch_to.frame(driver.find_element_by_css_selector("iframe#iframeMail"))
driver.find_element_by_xpath("//a[contains(@href,'minuteinbox')]").click
當您在 iframe 中完成作業后,您將不得不使用默認內容
driver.switch_to.default_content()
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/416032.html
標籤:
