【问题标题】:How can I use Selenium Explicit Wait如何使用 Selenium 显式等待
【发布时间】:2021-12-18 22:02:27
【问题描述】:

我是一名喜欢游戏的韩国学生。 最近,我正在开发一个使用 Python selenium 库抓取游戏项目的程序。但是,我有一个问题。

如果文本存在,sell_count 将是文本。 否则,如果 text 不存在,则 sell_count 将为 1。

我正在使用显式等待。 但它没有用。太费时间了。

我尝试通过谷歌搜索找到解决方案。但每个案例都帮不了我

请帮帮我:(

如果你帮助我,我想我会很高兴。

感谢您阅读本文。祝你有美好的一天:)

try:
    wait(driver, 1).until(EC.presence_of_element_located((By.CSS_SELECTOR, "#tbodyItemList > tr:nth-child(1) > td:nth-child(1) > div > span.count > em")))
    sell_Count = driver.find_element_by_xpath('/html/body/div[2]/div/main/div/div[3]/div[2]/div/div/div[1]/table/tbody/tr['+str(i)+']/td[1]/div/span[3]/em').text
    sell_Count = sell_Count[1:-8]
except:
    sell_Count = "1"

enter image description here

【问题讨论】:

  • 那么,您是在尝试指出sell_Count[1:-8] 的内容是1 还是文本?
  • @PedroMaia 对!我不擅长英语。谢谢你的解释。
  • @Prophet 是的!如果 text 存在,则 sell_count 将是 text_value。否则它将是 1。我的代码有问题,所以我更正了它。
  • 1 秒是一个很短的超时时间。我会增加那个。它只会等待找到元素所需的时间。如果您实际上不需要等待,请使用 find_elements 并检查返回的数组是否为 0 大小。
  • 你的 xpath 中的 i 是什么?这也是一个脆弱的 XPath,请分享网站 URL 或 HTML 代码,以便给您更准确的答案。

标签: python selenium web-crawler


【解决方案1】:

您的代码可能如下所示:

wait(driver, 1).until(EC.presence_of_element_located((By.CSS_SELECTOR, "#tbodyItemList > tr:nth-child(1) > td:nth-child(1) > div > span.count > em")))
sell_Count = driver.find_element_by_xpath('/html/body/div[2]/div/main/div/div[3]/div[2]/div/div/div[1]/table/tbody/tr['+str(i)+']/td[1]/div/span[3]/em').text
content = sell_Count[1:-8]
if not content.isdigit():
    sell_Count = content
else:
    sell_Count = "1"

【讨论】:

    猜你喜欢
    • 2023-03-11
    • 2012-05-11
    • 2013-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-11
    相关资源
    最近更新 更多