我必須找到這個文本并選擇。

我試過 :
element = driver.find_element_by_xpath('//*[@id="product-detail-app"]/div/div[3]/div[1]/div[2]/div[3]/div[2]/div[3]').text
print(element)
但它給出了錯誤:
---------------------------------------------------------------------------
NoSuchElementException Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_11408/4199675862.py in <module>
9 search_bar.send_keys(Keys.RETURN)
10 result = driver.find_element_by_class_name("prdct-desc-cntnr-name").click()
---> 11 price = driver.find_element_by_xpath('//*[@id="product-detail-app"]/div/div[3]/div[1]/div[2]/div[3]/div[2]/div[3]')
12 print(element)
13 #for i in browser.find_elements_by_class_name("sp-itm"):
c:\users\seher\appdata\local\programs\python\python37\lib\site-packages\selenium\webdriver\remote\webdriver.py in find_element_by_xpath(self, xpath)
392 element = driver.find_element_by_xpath('//div/td[1]')
393 """
--> 394 return self.find_element(by=By.XPATH, value=xpath)
395
396 def find_elements_by_xpath(self, xpath):
c:\users\seher\appdata\local\programs\python\python37\lib\site-packages\selenium\webdriver\remote\webdriver.py in find_element(self, by, value)
976 return self.execute(Command.FIND_ELEMENT, {
977 'using': by,
--> 978 'value': value})['value']
979
980 def find_elements(self, by=By.ID, value=None):
c:\users\seher\appdata\local\programs\python\python37\lib\site-packages\selenium\webdriver\remote\webdriver.py in execute(self, driver_command, params)
319 response = self.command_executor.execute(driver_command, params)
320 if response:
--> 321 self.error_handler.check_response(response)
322 response['value'] = self._unwrap_value(
323 response.get('value', None))
c:\users\seher\appdata\local\programs\python\python37\lib\site-packages\selenium\webdriver\remote\errorhandler.py in check_response(self, response)
240 alert_text = value['alert'].get('text')
241 raise exception_class(message, screen, stacktrace, alert_text)
--> 242 raise exception_class(message, screen, stacktrace)
243
244 def _value_or_default(self, obj, key, default):
NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="product-detail-app"]/div/div[3]/div[1]/div[2]/div[3]/div[2]/div[3]"}
(Session info: chrome=94.0.4606.71)
我嘗試了不同的解決方案,但沒有奏效。這是一個可選擇的div. 我必須找到我需要的文本并將其設定為可選。但是我找不到文本。請幫幫我,謝謝。
uj5u.com熱心網友回復:
嘗試在訪問元素之前添加等待,如下所示:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(driver, 20)
value = wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="product-detail-app"]/div/div[3]/div[1]/div[2]/div[3]/div[2]/div[3]'))).text
print(value)
此外,您的 XPath 定位器看起來很糟糕。In 可能非常不可靠。
UPD
該元素的更好的 XPath 定位器可以是//div[@class='variants']//div[text()='38']這樣您的代碼將是:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(driver, 20)
value = wait.until(EC.visibility_of_element_located((By.XPATH, "//div[@class='variants']//div[text()='38']"))).text
print(value)
UPD
看來您必須切換到新視窗。
嘗試這個:
new_window = driver.window_handles[-1]
driver.switch_to_window(new_window)
要回傳第一個視窗,您必須執行以下操作:
old_window = driver.window_handles[0]
driver.switch_to_window(old_window)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/311600.html
