我是 Selenium 的新手,我尝试单击第二页上的链接(在登录页面之后)。登录部分有效,浏览器转到下一页,但是在下一页它引发异常:
这是我的回溯:
Traceback (most recent call last):
File "d:/Personal_projects/Programmeren/Python/Automate the boring stuff/Chapter12/seleniumTest.py", line 22, in <module>
weekElem = browser.find_element(By.PARTIAL_LINK_TEXT,'/go/')
File "C:\Users\****\AppData\Roaming\Python\Python37\site-packages\selenium\webdriver\remote\webdriver.py", line 1246, in find_element
'value': value})['value']
File "C:\Users\****\AppData\Roaming\Python\Python37\site-packages\selenium\webdriver\remote\webdriver.py", line 424, in execute
self.error_handler.check_response(response)
File "C:\Users\****\AppData\Roaming\Python\Python37\site-packages\selenium\webdriver\remote\errorhandler.py", line 247, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"partial link text","selector":"/go/"}
(Session info: chrome=96.0.4664.93)
这是我的代码(登录信息明显模糊):
#! python3
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
browser = webdriver.Chrome()
# First webpage
browser.get('https://www.signupgenius.com/register')
userElem = browser.find_element(By.ID,'email')
userElem.send_keys('************')
passwordElem = browser.find_element(By.ID,'pword')
passwordElem.send_keys('**********')
loginBtnElem = browser.find_element(By.ID,'loginBtnId')
loginBtnElem.click()
time.sleep(10)
# Second webpage
weekElem = browser.find_element(By.PARTIAL_LINK_TEXT,'/go/')
weekElem.click()
我正在寻找的元素是:
<a href="/go/10C426245672F85" class="text-orange text-underlined"><strong class="ng-binding">1212</strong></a>
(/go/ 之后的部分每周都会更改,这就是我使用 Partial Link Text 的原因)
我希望有人能帮我解决这个问题!
编辑我找到了修复,通过使用 Xpath 解决了问题:
weekElem = browser.find_element(By.XPATH, '//a[contains(@href,"/go/")]')
如果有人能详细说明为什么部分链接文本不起作用,那会让我更深入地了解 Selenium 的工作原理!