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

Python Selenium-通过包含特定单词的链接查找元素

高化
2023-03-14

我正在运行一个代码,该代码在文件夹中导航,最后到达目标并通过单击文件下载文件。

例如,要查找我正在使用的文件夹,请执行以下操作:

find_element_by_link_text("Pricing and Catalogs")

问题是文件夹有时写得不完全一样。例如,它有两个空格。

所以我的问题是:是否有可能通过包含特定单词的文本找到元素?例如这样的事情(我知道这是不对的,我只是想让你理解我):

find_element_by_link_text(containing "Pricing" and "Catalogs")

我寻找答案,但没有找到我要找的。如果这是重复的,我道歉,并要求指出正确的方向。

提前谢谢!

编辑:使用find\u element\u by\u partial\u link\u text无法进行编辑,因为还有其他文件夹的名称中包含定价或目录。

<td class="ms-tv-item ctl00_PlaceHolderLeftNavBar_ctl02_WebTreeView_2" style="white-space:nowrap;"><a class="ctl00_PlaceHolderLeftNavBar_ctl02_WebTreeView_0 ms-tv-item ctl00_PlaceHolderLeftNavBar_ctl02_WebTreeView_1" href="javascript:_spNavigateHierarchy(this,'','TAKES YOU TO SOME PAGE',false,'FolderNode', '')" title="Pricing  and  Catalogues" id="ctl00_PlaceHolderLeftNavBar_ctl02_WebTreeViewt223" style="border-style:none;font-size:1em;">Pricing  and  Catalogues</a></td>

共有3个答案

魏高邈
2023-03-14

要单击包含定价和目录文本的intendecd元素,可以使用以下代码行之一:

>

WebDriverWait(driver, 30).until(EC.element_to_be_clickable((By.LINK_TEXT, "Pricing  and  Catalogues"))).click()

XPATH

WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[contains(.,'Pricing') and contains(.,'Catalogs')]"))).click()

CSS_SELECTOR

WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a.ctl00_PlaceHolderLeftNavBar_ctl02_WebTreeView_0.ms-tv-item.ctl00_PlaceHolderLeftNavBar_ctl02_WebTreeView_1[title='Pricing  and  Catalogues']"))).click()
欧盛
2023-03-14

此外,用节点替换文本有时效果更好:

用法示例:

find_element_by_xpath("//a[contains(node(), 'Pricing') and contains(node(), 'Catalogs')]")
禄星腾
2023-03-14

您可以尝试XPath:

例子:

find_element_by_xpath("//a[contains(text(), 'Pricing') and contains(text(), 'Catalogues')]")

编辑您拼错了链接文本。代码有目录。但是超文本标记语言有“目录”。更正xpath。

 类似资料:
  • 问题内容: 如果我搜索单个字符串,则效果很好: 但是我可以在下面的示例中有一个 or 语句吗? 问题答案: 在两个函数调用之间说 或使用函数使xpath不区分大小写

  • 如何返回特定日期所在的行号? 类似这样的事情:

  • 问题内容: 那么,如何检查字符串中是否包含特定单词? 这是我的代码: 我遇到了错误。 问题答案: 并不像他们所说的那么复杂,选中此选项您不会后悔。 您可以根据需要更改。

  • 我必须在数据库中找到所有有模式的记录。如果字段中的任何单词以特定字符串结尾。比如“is”: 所以像%is%或%is这样的简单操作是无效的。有没有什么正则表达式可以帮我做这件事?我也可以在PHP中使用LIKE%is%和filtring获得所有记录,但仍然没有任何线索如何。我有结束字符串的解决方案,但没有单词。

  • 如何使用PHP正则表达式检查字符串变量$str是否包含单词“cat”,但不包含单词“dog”。 案例1:$str=“我的宠物:鹦鹉”- 我尝试过这个方法,但我想知道是否有一个正则表达式可以做到这一点

  • 问题内容: 这个问题的答案是 社区的努力。编辑现有答案以改善此职位。它目前不接受新的答案或互动。 考虑: 假设我有上面的代码,编写该语句的正确方法是什么? 问题答案: 您可以使用该函数来查找另一个字符串中另一个字符串的出现: 注意,of的使用是故意的(既不会也不返回期望的结果);返回大海捞针字符串中针线串起始处的偏移量,或者返回boolean值(如果找不到针)。由于0是有效的偏移量,而0是“假”,