查找并单击具有更改 CSS 选择器的元素 (python)

2023-12-09

我正在编写一个脚本,需要单击页面的某个元素,但是,CSS 选择器每天都会随着元素更改其位置而更改。

今天它的名字叫:

PPTAmFCTable > tbody:nth-child(1) > tr:nth-child(11) > td:nth-child(3) > a:nth-child(1)

昨天是:

PPTAmFCTable > tbody:nth-child(1) > tr:nth-child(10) > td:nth-child(3) > a:nth-child(1)

明天可能是tr:nth-child(13) or so.

我使用以下代码:

def click_element_bycss(browser,css,timeout):
    element_present = EC.presence_of_element_located((By.CSS_SELECTOR,css)) 
    WebDriverWait(browser, timeout).until(element_present)
    browser.find_element_by_css_selector(css).click()

进而:

click_element_bycss(browser,"#PPTAmFCTable > tbody:nth-child(1) > tr:nth-child(11) > td:nth-child(3) > a:nth-child(1)",4)

如何以单击右侧元素的方式编写代码,而不知道第二个 tr:nth-child() 中的数字?

元素 HTML:

<a href="/FC1/ItemList;jsessionid=E6B3D538CD809FDDC3DE69EA160C956D?WorkPool=PickingNotYetPicked&amp;ExSDRange.RangeEndMillis=1556850660000&amp;ProcessPath=PPTAmFC&amp;ExSDRange.RangeStartMillis=1556850599999&amp;shipmentType=TRANSSHIPMENTS">261</a>

想到一个刚刚运行的循环 for i in range(1,20): tr:nth-child(i) 但希望有更聪明的东西。


要查找并单击该元素,因为该元素是动态元素,您需要诱导WebDriver等待为了element_to_be_clickable()您可以使用以下任一方法定位策略:

  • Using CSS_SELECTOR:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#PPTAmFCTable>tbody a[href^='/FC1/ItemList'][href$='TRANSSHIPMENTS']"))).click()
    
  • Using XPATH:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//*[@id='PPTAmFCTable' and starts-with(@href,'/FC1/ItemList')][contains(@href, 'TRANSSHIPMENTS')]")))
    
  • Note:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

查找并单击具有更改 CSS 选择器的元素 (python) 的相关文章

随机推荐

  • 连接到与登录 google colab 不同的 google 驱动器

    最近 colab 删除了从您在 google 云端硬盘中登录的帐户以外的其他帐户连接到 google 云端硬盘的功能 有人发布了一个使用以下代码的解决方法 效果很好 直到现在 apt get install y qq software pr
  • 理解结构等价

    我有两种类型的结构等价思想我正在努力理解 VAR 1 int VAR 2 pointer to VAR 1 所以在这里 我觉得它们在结构上是等效的 因为从技术上讲 这些类型都指向整数类型 对吗 但如果你有类似的东西 VAR 3 pointe
  • Crystal Report Viewer 打印/导出按钮在 ASP.NET MVC 应用程序中不起作用

    我的 MVC 应用程序使用推送模型和 CR 查看器进行报告 在查看器中显示报告时一切都很好 但是打印 导出按钮给出了 JavaScript 错误 此操作不支持对象 我正在使用 VS 2008 和 MVC 这发生在我的开发环境中 有任何想法吗
  • Android 中的自定义字体(适用于整个应用程序)[重复]

    这个问题在这里已经有答案了 我有这个 android 代码 其中有许多类 每个类都有不同的视图 我们可以进入设置并根据所选的字体更改其字体 目前仅预装的 Android 字体可用 有没有办法稍微调整我的代码 以便我可以添加 ttf 文件并将
  • 如何知道 Azure 服务器是否使用 TLS 1.2

    我们有一个托管在 Azure 服务器中的 Web 应用程序 使用 Azure 服务器中的 api 出于安全目的 我们想知道服务器是否处于 tls 1 2 之下 我想对于非云服务器 我们只需在 regedit 中查看即可知道 我已经看到有关如
  • 线程是内核对象吗?

    在这本书中 我读到每个实例Thread类实际上正在分配一个内核对象 这是使用的开销之一Thread 据我所知 线程不是内核对象 在这种情况下只有进程是内核对象 进程包含的线程不是内核对象 有人可以解释一下吗 线程首先是一个托管对象 你知道S
  • 如何将 JavaScript 侦听器添加到 PrimeFaces Ajax 事件

    我想通过javascript方法监听pickList传输事件 侦听器与 java bean 配合良好
  • Django + Mongo + Docker 获取 pymongo.errors.ServerSelectionTimeoutError

    我一直在努力使用 Django Djongo Mongodb 和 Docker Compose 运行一个简单的应用程序 我的设置如下所示 docker compose yml services mongodb image mongo lat
  • PackageMaker 的“在包中包含根”选项实际上有什么作用?

    我正在为 OS X 应用程序制作安装程序 但无法理解 PackageMaker 的 UI 我的 PackageMaker 版本是 3 0 4 与 Lion 和 Xcode 4 1 一起运行 其中一个选项尤其让我感到困惑 这是编辑包内容时的
  • 为什么我必须最后调用 super -dealloc,而不是首先调用?

    正确的例子 void dealloc viewController release window release super dealloc 错误的例子 void dealloc super dealloc viewController r
  • 删除QListView背景

    我想删除我的 QListView 的背景 以便可以看到下面的背景 我怎样才能做到这一点 I tried setAttribute Qt WA NoSystemBackground and setAttribute Qt WA NoBackg
  • 通过pywin32将pandas数据框写入word文档表

    我目前正在编写一个脚本 需要写入 docx 文件以进行演示 我使用 pandas 来处理脚本中的所有数据计算 我希望使用 PyWIN32 将 pandas 数据帧写入 word docx 文件中书签处的表中 数据框由浮点数组成 伪代码是这样
  • 如何创建其中包含永久提示的编辑文本

    我有一个编辑文本 用户在其中输入金额 我想要做的是在其前面设置一个用户不可编辑的文本视图值 例如 INR 然后用户将在其前面输入金额 我希望 edittext 看起来像下面的那样 我怎样才能做到这一点
  • Laravel 4 Auth with Facebook(无密码身份验证)

    我正在尝试使用 Laravel 4 设置一个通过 Facebook 登录的身份验证系统 我正在为 Laravel 4 使用 madewithlove laravel oauth2 包 当然 当用户使用 Facebook 登录时 没有密码可以
  • ElementTree(1.3.0) Python中XML解析的高效方法

    我正在尝试解析一个巨大的 XML 文件 20MB 3GB 文件是来自不同仪器的样本 所以 我正在做的是从文件中查找必要的元素信息并将它们插入到数据库 Django 中 我的文件样本的一小部分 命名空间存在于所有文件中 文件的有趣特征是它们有
  • ASP.NET MVC 5 错误处理

    我们想要处理 403 错误 404 错误以及由于以下原因导致的所有错误MySpecialDomainException并为所有其他错误 包括 IIS 配置中的错误 提供默认错误页面 所有错误都应该返回正确的 Razor 视图 如果有一个Er
  • 通量存储或操作(或两者)是否应该接触外部服务?

    如果商店保持自己的状态并能够调用网络和数据存储服务 在这种情况下 这些操作只是愚蠢的消息传递者 OR 存储是否应该是来自操作的不可变数据的愚蠢接收者 并且操作是在外部源之间获取 发送数据的操作 在这种情况下 存储将充当视图模型 并且能够聚合
  • 循环数组并将连续数字分组到另一个数组 SWIFT 4 中的最佳方法?

    我试图找出使用 SWIFT 4 循环数字数组 获取任何连续数字的范围并将其添加到新数组的最有效方法 我可以进行标准循环检查 但我相信我可以使用地图过滤器 有人能指出我正确的方向吗 开始 myNumbersArray Int 1 2 3 4
  • 如何在UIWebView中设置自定义字体?

    我在资源中有一个字体 并将其加载到 UIFont 中 我想知道如何使用这个 UIFont 作为我的 UIWebView 的默认字体 提前致谢 如果您使用网页在WebView中显示 这就是我要做的 使用 HTML 页面的标题创建一个字符串 在
  • 查找并单击具有更改 CSS 选择器的元素 (python)

    我正在编写一个脚本 需要单击页面的某个元素 但是 CSS 选择器每天都会随着元素更改其位置而更改 今天它的名字叫 PPTAmFCTable gt tbody nth child 1 gt tr nth child 11 gt td nth