【问题标题】:How to retrieve text by xpath如何通过 xpath 检索文本
【发布时间】:2021-04-07 20:33:17
【问题描述】:

大家好

我今年 15 岁,目前正在制作一个 python/selenium 脚本,它会自动登录我的学校页面,然后进去看看我明天有什么作业。

我希望它检查我们是否收到作业的方式是:“LB MAT 86”文本框是否是其他内容(因为这意味着我们已收到作业)

现在让我告诉你我的问题:

图片:https://i.stack.imgur.com/WLjuR.png

但首先,让我告诉你我的“作业页面”是如何设计和工作的。

在你看到的图片上,我检查了文字:“LB MAT 86”。

  • LB 是我老师名字的缩写。
  • MAT 代表“matematik”,仅表示英语中的数学。
  • 86 是我们班的班级编号。

当我们得到作业时,我们的老师会删除文本“LB MAT 86”,而是写下我们得到的作业。

我的问题是如何找到文本。我能看到你如何找到文本的唯一方法是通过它的位置。

文本字段的xpath://*[@id="sk-diary-notes-container"]/div/div[1]/div/table/tbody/tr[3]/td[3] /text()[1]

文本字段的完整xpath:/html/body/div[1]/div[2]/div[3]/div[2]/div/div/div[1]/div/table/tbody /tr[3]/td[3]/text()[1]

OuterHTML:LB MAT 86

谢谢

【问题讨论】:

    标签: python-3.x selenium xpath


    【解决方案1】:
    driver.find_element_by_xpath("//table[contains(@align,'center')//td[contains(.,'LB MAT 86')]")
    

    将获取带有文本 LB MAT 86 的元素。

    您可以添加一些代码来查找当前索引以检查您的代码。 /tr[i]/td[i]

    【讨论】:

    • 嘿阿伦迪普。是的,但问题是我的老师删除了文本“LB MAT 86”,而是在文本字段中写了我们的作业。你明白我的意思吗?
    • 他要你学习如何使用拆分。这是我的假设。学习它
    • 是的,他想在您在当前日期找到元素后拆分。
    【解决方案2】:

    试试这个xpath

    locator = driver.find_element_by_xpath("//table[contains(@align,'center')/tbody/tr[3]/td[3]")
    

    你应该得到包括 nbsp(非制动空间)在内的所有东西。 然后拆分结果,得到nbsp;之后的所有内容

    您没有包含 html 代码,仅包含屏幕截图。下次包括它(或现在包括它)。 测试正确的定位器后,尝试使用 split()。它将从您的文本中获取最后一个元素除以空格。我不能 100% 确定它会起作用,请自行尝试。

    mystring = locator.text
    desired_text = result = mystring.split(' ')[-1]
    

    【讨论】:

    • 我现在改了。我刚刚复制了outerHTML。希望这就是你所说的。我只使用 python 1 周
    • 试试定位器。另外,您有指向您网站的链接吗?
    • 嘿维塔利斯。很遗憾,我不能给你这个网站,因为你需要一个学生登录才能访问它。
    • 希望我的建议对您有所帮助。
    • 如果回答有帮助别忘了点赞和采纳)
    猜你喜欢
    • 2010-10-08
    • 1970-01-01
    • 2020-05-15
    • 1970-01-01
    • 2021-08-08
    • 1970-01-01
    • 2011-01-15
    • 2013-04-20
    • 1970-01-01
    相关资源
    最近更新 更多