【问题标题】:can't click on div element through text无法通过文本点击 div 元素
【发布时间】:2018-01-06 05:31:49
【问题描述】:

我正在尝试为我的雇主自动化一些下载。我在 python 和 chromedriver 中使用 selenium。

我一直在点击这个 div 元素,它是 javascript 下拉菜单的一部分。

<div class="item " idx="2" style="" title="">N53AC : BABY MILK UP TO 6 MONTHS</div>

通过在 Internet Explorer 中查找 innerText 属性,我已经能够使用 vbscript 单击此按钮。

我已经试过了

elemf = driver.find_elements_by_tag_name("div")

for element in elemf:
    #print(element.get_attribute("innerhtml"))
    if element.get_attribute("innerhtml")=="N53AC : BABY MILK UP TO 6 MONTHS" or element.get_attribute("innertext")=="N53AC : BABY MILK UP TO 6 MONTHS" or element.text=="N53AC : BABY MILK UP TO 6 MONTHS":
        element.click()

有什么线索吗?我是 html 的新手。

【问题讨论】:

  • 你能发一个网页链接吗?我建议复制按钮的 xpath 并使用 driver.find_element_by_xpath()
  • 可以分享异常日志吗?顺便说一句,您应该使用innerHTML 而不是innerhtmlinnerText 而不是innertext。也可以试试XPath//div[.="N53AC : BABY MILK UP TO 6 MONTHS"]
  • 试试if 'N53AC' in element.text: ...

标签: python html selenium innertext


【解决方案1】:

这是您问题的答案:

您的代码中的主要问题是您正在尝试find_elements_by_tag_name("div");,这在当前的HTML DOM 上会很多。相反,您需要将搜索范围缩小到以下内容:

elemf = driver.find_elements_by_xpath("//div[@class='item ']");

现在我们可以进入循环调用click()方法如下:

for element in elemf:
    my_attribute = element.get_attribute("innerHTML")
    if my_attribute == "N53AC : BABY MILK UP TO 6 MONTHS"
        element.click()
        break

如果这能回答您的问题,请告诉我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-13
    • 1970-01-01
    • 1970-01-01
    • 2019-09-17
    相关资源
    最近更新 更多