我有一个很大的电子邮件HTML表,我试图找到特定电子邮件的名称,然后在此元素中选择一个按钮。我可以通过XPATH轻松找到表主体:
//*[@id="reportList"]/tbody
然后该表中有多行(tr),是否可以在所有表行中搜索文本?
我最近得到的是:
driver.find_element(By.XPATH, '//*[@id="reportList"]/tbody[contains(text(), "example text")]')
不幸的是,这找不到元素。
我知道我可以简单地复制XTR来查找特定的tr,但是出于自动化的目的,我试图传递一个字符串,然后在所有tr内搜索我的特定文本。
答案 0 :(得分:2)
获取xpath的三个选项:
XPATH= //*[@id='reportList']//*[contains(text(), 'example text')]
如果您的文字带有tr:
XPATH= //*[@id='reportList']/tbody//tr[contains(text(), 'example text')]
如果您的文字带有td:
XPATH= //*[@id='reportList']/tbody//tr//td[contains(text(), 'example text')]
答案 1 :(得分:1)
据我所知,表具有tr
和td
,可能您需要td
。因此,xPath可能是这样的:
driver.find_element(By.XPATH, "//*[@id='reportList']/tbody//td[contains(text(), 'example text')]")
其中...tbody//td...
表示它将在td
的所有子节点tbody
中进行搜索。因此,td
不应是tbody
PS,我还将添加wait
方法以确保该元素存在:
# will wait up to 10 seconds until element will be present on the page
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.XPATH, "//*[@id='reportList']/tbody//td[contains(text(), 'example text')]"))
)
注意:您必须进行一些导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
答案 2 :(得分:0)
我是python硒的新手。我可以使用此行
打印 if(command === "send") {
if(message.author.id !== "593964642934718494" ) {return message.channel.send("You cannot use this command! Only MHA 5 can.")}
let member = message.mentions.members.first() || message.guild.members.get(args[0]);
member.send(`Current Group Link (hi) `)
const embed = {
"description": "Sent a group link to the user, successfully.",
"color": 839999,
"timestamp": (n)
};
中的文本
td
对于我来说,我想遍历行并单击行(XPATH= //*[@id='reportList']//*[contains(text(), 'example text')]
)的第一列(td
)中的链接,该链接在第三列中具有文本“ CREATED”( tr
。