使用 Selenium 和 Python3 单击自定义按钮

问题描述 投票:0回答:1

我正在尝试使用 Selenium 单击带有“全部展开”文本的“按钮”(请参阅随附的屏幕截图)。我正在使用硒

v4.15.2
。下面的每一行代表一些测试,它要么返回空 [],要么返回找不到元素的错误,或者该元素没有单击/提交属性:

#chks = driver.find_elements("xpath", "//*[contains(text(), 'awsui-button-region')]")

#chks = driver.find_elements("xpath", "//div[@class='_alignRight_dku4v_1259']")

#chks = driver.find_elements("xpath", '//button[@class="awsui-button awsui-button-variant-normal awsui-hover-child-icons"]').click()

#chks = driver.find_elements("xpath", '//button[@class="awsui-button awsui-button-variant-normal awsui-hover-child-icons"]')

#chks = driver.find_elements("xpath", "//button[text()='comm-expand-all']")

屏幕截图中的“div 类”在其他“div 类”中嵌套了大约 5 层。

我也尝试实现类似的东西,但没有运气:无法使用selenium单击提交按钮

#chks = driver.find_elements("xpath", "//button[contains (@class, 'awsui-button awsui-button-variant-normal awsui-hover-child-icons')]")

#chks = driver.find_elements("xpath", "//button[(@class = 'awsui-button awsui-button-variant-normal awsui-hover-child-icons')]")

我还尝试使用从开发人员模式复制的 xpath(和完整 xpath):

#chks = driver.find_elements("xpath", "/html/body/div[2]/div/div[1]/div/div/section/div/awsui-app-layout/div/main/div/div[2]/div[2]/span/div/div/section/div/section/awsui-tabs/div/div/div[4]/span/section/div/div/div/div/awsui-button/button")

#chks = driver.find_elements("xpath", '//*[@id="awsui-tabs-0-correspondences-panel"]/span/section/div/div/div/div/awsui-button/button')

我需要单击“按钮”,以便它展开页面的所有部分。如果单击,文本将更改为“全部折叠”。我正在尝试下载该页面(使用

driver.page_source
),但如果我不展开所有部分,我正在搜索的确切文本(地址)将包含在下载的页面中。谢谢。 [全部展开按钮][1] [1]:https://i.stack.imgur.com/fYFbx.jpg

macos selenium-webdriver button firefox click
1个回答
0
投票

我能够弄清楚:

  1. 使用以下步骤获取按钮的相对 XPath(绝对 XPath 不起作用)
  2. 在 Chrome 中打开页面,
  3. 右键单击按钮并从菜单中选择“检查”
  4. 这将打开“开发人员工具”的“元素”选项卡,其中包含“
  5. 右键单击该行并从菜单中选择“复制”>“复制 XPath”
  6. 要获取按钮的 XPath,请从复制的 XPath 中删除结尾的“/span”: //*[@id="awsui-tabs-0-correspondences-panel"]/span/section/div/div/div /div/awsui-button/button/span
  7. 除了上一步之外,右键单击菜单中的“
  8. 您必须最大化浏览器窗口(driver.maximize_window())
  9. 在代码中使用相对 XPath 来获取按钮: theButton = driver.find_elements("xpath", "//*[@id='awsui-tabs-0-correspondences-panel']/span/section/div/ div/div/div/awsui-button/button")
  10. 使用循环单击按钮(没有循环对我来说不起作用)
for i in theButton:
   i.click()
© www.soinside.com 2019 - 2024. All rights reserved.