当前位置: 首页 > 知识库问答 >
问题:

我找不到如何用selenium python获取文本[重复]

隗嘉歆
2023-03-14
<span class="noactive">0&nbsp;Jours restants</span>

我的代码

def scrapper_lenovo(file, line):
   CHROME_PATH = 'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe'
   CHROMEDRIVER_PATH = 'C:\webdriver\chromedriver'
   WINDOW_SIZE = "1920,1080"
   chrome_options = Options()  
   chrome_options.add_argument("--headless")
   chrome_options.add_argument("--window-size=%s" % WINDOW_SIZE)
   chrome_options.binary_location = CHROME_PATH
   d = driver.Chrome(executable_path=CHROMEDRIVER_PATH,
                          chrome_options=chrome_options)  
   d.get("https://pcsupport.lenovo.com/fr/fr/warrantylookup")
   search_bar = d.find_element_by_xpath('//*[@id="input_sn"]')
   search_bar.send_keys(line[19])
   search_bar.send_keys(Keys.RETURN)
   time.sleep(4)
   try:
      warrant = d.find_element_by_xpath('//*[@id="W-Warranties"]/section/div/div/div[1]/div[1]/div[1]/p[1]/span')
      file.write(warrant)
   except:
      print ("test")
      pass
   if ("In Warranty" not in d.page_source):
    file.write(line[3])
    file.write("\n")
   d.close()

正如您所看到的,我尝试打印“warrant”的内容,但我找不到任何允许它的函数(我看到一些函数使用。text()、.gettext(),但无论出于什么原因,我都无法让它们工作)。

共有1个答案

梁昊天
2023-03-14

您可以尝试显式匹配所需的标记,相关的XPath表达式为:

//span[@class='noactive']

我还建议使用这个time.sleep()函数,它是某种形式的性能反模式,如果您需要等待某个元素的存在/可见/不可见/不存在,您应该选择显式等待

因此删除这些行:

time.sleep(4)
warrant = d.find_element_by_xpath('//*[@id="W-Warranties"]/section/div/div/div[1]/div[1]/div[1]/p[1]/span')
warrant = WebDriverWait(driver, 10).until(expected_conditions.presence_of_element_located((By.XPATH, "//span[@class='noactive']")))
 类似资料:
  • 我尝试找到不在div元素中的文本,并将其包装到div: null null 我找不到正确的方法。 我试图达到的结果是:

  • 问题内容: 嗨,如何在Selenium(Python 3)中禁用GeckoDriver的日志文件? 如果不可能,如何将其重新定位到Temp文件? 问题答案: 要重新 放置GeckoDriver 日志,可以在项目空间中创建一个目录,例如 Log, 并且可以使用参数 log_path 将 GeckoDriver 日志存储在文件中,如下所示:

  • 我正在尝试用单节点hadoop集群运行一个示例程序。我在运行示例程序(jar文件)时遇到一个异常。 多谢了。

  • 问题内容: 我想从我的文本字段中获取数据并将其设置为int h。并改变了矩形的大小,但我不确定如何从文本字段中获取数据,我在actionperfomred中使用e.getsource很累,但找不到我的文本字段。我的代码如下: 问题答案: 该变量是本地变量。如果要从访问它,则需要将其更改为实例变量。

  • 问题内容: 请参阅以下元素: 找到我的元素: 因此,找到后并使用带有selenium 或return 的文本: 所以我的问题是如何在没有此情况的情况下仅获得最后一行 问题答案: 所需的文本出现在文本节点中,并且无法直接使用Selenium检索,因为它仅支持元素节点。 您可以删除开头: 您还可以使用正则表达式从中提取所需的内容: 或使用一段JavaScript:

  • 问题内容: 请参阅以下元素: 找到我的元素: 因此,找到后并使用带有selenium 或return 的文本: 所以我的问题是如何只获得没有这一点的最后一行 问题答案: 所需的文本出现在文本节点中,并且无法直接使用Selenium检索,因为它仅支持元素节点。 您可以删除开头: 您还可以使用正则表达式从中提取所需的内容: 或使用一段JavaScript: