如何调整这行硒代码以获取该项目的状态信息?
How can I adjust this line of selenium code to get the status info of this item?
我有这行代码,我正试图用它来获取项目的状态。这是代码行:
item_status = driver.findElement(By.className("status-info")).getText();
我不确定如何调整它以检索此处看到的文本:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
options=Options()
driver=webdriver.Chrome(options=options)
#Directing to site
driver.get("https://www.amazon.co.uk/Nintendo-Switch-OLED-Model-Neon/dp/B098TNW7NM/ref=sr_1_3?keywords=Nintendo+Switch&qid=1651147043&sr=8-3");
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "/html/body/div[2]/span/form/div[3]/span[1]/span/input"))).click()
driver.findElement(By.className("status-info"))
是 Java 语法,getText()
是 Java方法。可能您需要 Python 语法和方法。
解决方案
打印正文有现货需要诱导WebDriverWait for the and you can use either of the following :
使用CSS_SELECTOR:
print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "span.a-size-base.a-color-success.a-text-bold"))).text)
使用 XPATH:
print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//span[@class='a-size-base a-color-success a-text-bold']"))).get_attribute("innerHTML"))
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
当你这样做的时候
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "/html/body/div[1]/header/div/div[1]/div[2]/div/form/div[3]/div/span/input"))).click()
它将单击搜索图标,现在在结果页面上,此 xpath //span[@class='a-size-base a-color-success a-text-bold']
不存在因此您可能会在控制台上打印任何内容 TimedoutException
.
但是看看你分享的截图,我会说使用这个 xpath
//div[@id='availability']//span[contains(text(),'In stock.')]
如果要打印文字和标签
print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@id='availability']//span[contains(text(),'In stock.')]"))).get_attribute("innerHTML"))
如果您只需要文字:
print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@id='availability']//span[contains(text(),'In stock.')]"))).get_attribute("innerText"))
我有这行代码,我正试图用它来获取项目的状态。这是代码行:
item_status = driver.findElement(By.className("status-info")).getText();
我不确定如何调整它以检索此处看到的文本:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
options=Options()
driver=webdriver.Chrome(options=options)
#Directing to site
driver.get("https://www.amazon.co.uk/Nintendo-Switch-OLED-Model-Neon/dp/B098TNW7NM/ref=sr_1_3?keywords=Nintendo+Switch&qid=1651147043&sr=8-3");
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "/html/body/div[2]/span/form/div[3]/span[1]/span/input"))).click()
driver.findElement(By.className("status-info"))
是 Java 语法,getText()
是 Java方法。可能您需要 Python 语法和方法。
解决方案
打印正文有现货需要诱导WebDriverWait for the
使用CSS_SELECTOR:
print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "span.a-size-base.a-color-success.a-text-bold"))).text)
使用 XPATH:
print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//span[@class='a-size-base a-color-success a-text-bold']"))).get_attribute("innerHTML"))
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
当你这样做的时候
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "/html/body/div[1]/header/div/div[1]/div[2]/div/form/div[3]/div/span/input"))).click()
它将单击搜索图标,现在在结果页面上,此 xpath //span[@class='a-size-base a-color-success a-text-bold']
不存在因此您可能会在控制台上打印任何内容 TimedoutException
.
但是看看你分享的截图,我会说使用这个 xpath
//div[@id='availability']//span[contains(text(),'In stock.')]
如果要打印文字和标签
print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@id='availability']//span[contains(text(),'In stock.')]"))).get_attribute("innerHTML"))
如果您只需要文字:
print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@id='availability']//span[contains(text(),'In stock.')]"))).get_attribute("innerText"))