点击元素时出现 Python Selenium 问题

标签 python selenium xpath css-selectors webdriverwait

我从 Chrome 中检查了以下代码。我正在尝试单击该对象。理想情况下利用 xpath 或 css 选择器。

我复制了 Xpath,如下所述

/html/body/form/table[4]/tbody/tr/td[1]/table/tbody/tr[3]/td

这是完整路径

<td style="text-decoration: none; color: rgb(0, 0, 0); font-family: Arial; font-size: 11px; padding-bottom: 2px; padding-top: 1px; border-bottom: 1px solid rgb(194, 194, 194); background: rgb(255, 255, 255); cursor: auto;" onmouseover="this.style.background='#BED9F5'; this.style.cursor='hand'; showTitle(this,'Review Quotes / Quote To Order',150,true); window.status='Review Quotes / Quote To Order'; return true;" onmouseout="this.style.background='#FFFFFF'; this.style.cursor='auto'; hideTitle(); window.status=' '; return true;" onclick="if (warnUnfinishedPage()) return false; changePage('pc.quote.html.QuoteSummarySection','refresh');  return false;" align="left" width="110" valign="middle" title="Review Quotes / Quote To Order">

&nbsp;&nbsp;Quotes

</td>

Katalon Recorder 将 Python 导出为以下几个选项,但似乎没有一个对我有用。它们都以no such element的形式返回。我认为这可能与括号有关?

driver.find_element_by_xpath("//td[@onclick=\"if (warnUnfinishedPage()) return false; changePage('pc.quote.html.QuoteSummarySection','refresh'); return false;\"]").click()

driver.find_element_by_xpath("//tr[3]/td").click()

driver.find_element_by_css_selector("td[title=\"Review Quotes / Quote To Order\"]").click()

任何关于我可以尝试的其他事情的建议将不胜感激!

最佳答案

所需的元素是 JavaScript启用的元素,因此您必须引发 WebDriverWait 才能使 元素可点击,并且您可以使用以下解决方案之一:

  • 使用CSS_SELECTOR:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "td[title='Review Quotes / Quote To Order']"))).click()
    
  • 使用XPATH:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//td[@title='Review Quotes / Quote To Order' and contains(.,'Quotes')]"))).click()
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    

关于点击元素时出现 Python Selenium 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53616361/

相关文章:

regex - 在 XSLT/XQuery 正则表达式中,对交替表达式的求值是否有要求的顺序?

python - 为什么 CPython 不将文字结果存储为代码对象的常量?

python - 如何将 tkinter 输入小部件中的每个字符与外部文本文件中的行进行比较?

selenium - 如何设置 Selenium WebDriver 与 selenium-webdriver gem 一起使用

python - 如何将程序的输出重定向到数据框

java - 当我在服务器上执行代码时,方法 sendKeys(Keys.ARROW_DOWN) 不起作用

php - 搜索 XML 项目 PHP XPath

c# - XPath 到 LINQ 的转换

python - 检测图像中的漫画对话气泡区域

python - 为什么使用 `OR` 对照多个值检查变量只检查第一个值?