javascript - python selenium xpath 多个按钮使用 javascript 问题

标签 javascript python selenium

我目前面临 selenium 在 javascript 按钮上获取确切 xpath 的问题,如果有人能启发我或指导我,我将不胜感激。

从图中可以看出,突出显示的是 javascript 按钮。我打算做的是使用 selenium 找到显示“账单”的按钮,然后单击它以清除状态。

testing

我目前的代码是

while True:
    try:
        driver.find_element_by_xpath("//*[@id='main']/div/div/div[2]/div/div[2]/table/tbody/tr[1]/td[12]/a[1]")
    except NoSuchElementException:
        driver.refresh()
        time.sleep(5)
    else:
        time.sleep(3)
        driver.find_element_by_xpath("//*[@id='main']/div/div/div[2]/div/div[2]/table/tbody/tr[1]/td[12]/a[1]").click()

我想要它做的是搜索“bill”按钮,如果没有找到,请不断刷新页面直到出现“bill”按钮,然后单击它会将其带到另一个页面。请注意,它可能会出现超过 1 个“账单”按钮(仍然没有弄清楚如何为该部分编码,但我希望它点击出现时间较早的“账单”按钮的行首先将转到另一个页面,然后在该页面上清除后将转发回此页面并继续使用第二个“账单”按钮等)

我的代码现在发生的情况是,xpath 元素仅位于“bill”按钮的第一行,它也可以是位于第一行同一位置的“check”按钮。就像我之前提到的那样,可能会出现多个“账单”按钮,所以我不确定如何解决这个问题。

这是我从 chrome 浏览器检查“账单”按钮时得到的 html。

<a href="javascript:;" onclick="showContent('billing','/info/bill/12');" class="btn btn-danger btn-sm">
                                    <span class="glyphicon glyphicon-card">
                                    </span>
                                    &nbsp;bill
                                </a>

如果有人能帮我解决这个问题,我真的很感激。谢谢

最佳答案

看起来您的 XPATH 已被复制粘贴。这应该行得通,因为每个 XPATH 都是唯一的,但让我展示另一种声明 XPATH 的方法。

尝试以这种格式声明 XPATH//tag_name[@attr1="value1"and @attr2="value2"and...and @attrn="valuen"]。在你的例子中:

while True:
    try:
        driver.find_element_by_xpath("//a[@class='btn btn-danger btn-sm' and @href='javascript;']")
    except NoSuchElementException:
        driver.refresh()
        time.sleep(5)
    else:
        time.sleep(3)
        driver.find_element_by_xpath("//a[@class='btn btn-danger btn-sm' and @href='javascript;']").click()

您还可以通过在控制台中搜索 XPATH 来验证您的 XPATH 是否唯一。在控制台中单击 Ctrl+F 并复制粘贴您的 XPATH。如果结果数为 1,则可以。否则,请尝试向您的 XPATH 添加更多属性。

还要在控制台中检查按钮的控件是保留在 a 中还是包裹在另一个标签中。如果它包含在另一个标记中,那么您可能必须更改 XPATH。

关于javascript - python selenium xpath 多个按钮使用 javascript 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62187408/

相关文章:

python - 学习如何在 Python 中实现 MapReduce/Hadoop 的起点?

php - IF/THEN 的 Python 语法与 PHP 相比

javascript - Selenium 不显示文本

java - Selenium java添加cookie

javascript - 使用 selenium WebDriver 禁用 javascript?

javascript - 超出未经身份验证使用的 Google Drive API 错误每日限制

php - 在jquery/javascript中创建数组的数组

javascript - 在 RequireJS 中的任何其他代码之前加载无 AMD 模块?

python - 在convert_to_south之后应用程序显示为 "not synced"

javascript - $and with sub $and 在 mongo 和 mongoose 中没有产生预期结果