Selenium单击JS按钮-Python?

Selenium单击JS按钮-Python?,python,selenium,button,click,refresh,Python,Selenium,Button,Click,Refresh,是的,也有类似的问题,但通读这些问题后,我没能找到解决问题的办法 以下情况:我正在尝试单击“”上的“回复”按钮,执行此单击后,会出现一个弹出窗口,我将单击另一个按钮,但让我们从第一个按钮开始,因为“回复”单击本身非常麻烦 “答复”按钮具有以下X路径: '/html/body/section/section/header/div[2]/div/button' 说到这里,源代码是: <button role="button" class="reply-button js-only" data

是的,也有类似的问题,但通读这些问题后,我没能找到解决问题的办法

以下情况:我正在尝试单击“”上的“回复”按钮,执行此单击后,会出现一个弹出窗口,我将单击另一个按钮,但让我们从第一个按钮开始,因为“回复”单击本身非常麻烦

“答复”按钮具有以下X路径:

'/html/body/section/section/header/div[2]/div/button'
说到这里,源代码是:

<button role="button" class="reply-button js-only" data-href="/__SERVICE_ID__/chs/ctd/7108660907">
      reply
    </button> 
每次我尝试时,网站都会正确加载(即使是在实现time.sleep(x))并尝试单击按钮,但这失败了,网站只是刷新-我猜他们要么重新设置受Selenium控制的浏览器,要么单击是不合法的,要么我的代码中没有捕捉到任何正确的内容。。有人能帮忙吗


顺便说一句,我已经尝试了“按类名”搜索,但也没有成功。

此Xpath:
'/html/body/section/section/header/div[2]/div/按钮“
就像你得到一张地图,上面有
的指示,向前走,直到你看到一辆车,然后左转30°,然后向前走,直到你看到一棵树,然后跳两次,然后去你右边的第二所房子
。使用不安全,请避免使用此类路径。如果页面布局发生更改,您的路径可能会无效

试试这个:

button = driver.find_element_by_xpath('//*[@class="reply-button js-only"]')
button.click()
单击按钮将打开一个“显示电话号码”弹出窗口(可能由
驱动程序定位。通过\u xpath('/*[@class=“show phone”]')查找\u元素)

说明:

如果需要正确的Xpath,请检查要与之交互的内容。要单击的按钮如下所示:

<button role="button" class="reply-button js-only" data-href="/__SERVICE_ID__/chs/ctd/7108660907">
      reply
    </button>
如果“find elements”返回一个结果,通常应该可以。您可以看到,我所做的只是将类粘贴到这个:
驱动程序中。通过xpath('/*[@
和这个
])
查找元素

如果需要更高的精度,可以指定它是一个按钮:

driver.find_element_by_xpath('//button[@class="reply-button js-only"]')
或者它是class:
class=“actions combo”
元素的直接子元素,因此更安全的路径是:

driver.find_element_by_xpath('//*[@class="actions-combo"]/button[@class="reply-button js-only"]')

此模式适用于所有webelement属性,而不仅仅适用于类。您也可以使用
role=“button”
进行更多筛选。查找Xpath,它是一个非常简洁的东西

您是如何得到这个可选XPath的?我将补充答案,等等。感谢您的深入解释。对我帮助很大,并且能够正确地点击回复按钮:)还剩下一个问题(如果您不介意回答的话):您将如何检查“/*[@class=“show phone”]”是否可用(然后点击它以最终取消隐藏号码和/或能够复制文本)?为此,检查这个:正确的方法是:
EC.element\u to\u可点击((By.XPATH,“myXpath”))
这是一个很好的方法!我想到了一个try/except块,但这并没有考虑任何等待时间(除了您使用time.sleep(x))之外)。。非常感谢你的帮助!
driver.find_element_by_xpath('//button[@class="reply-button js-only"]')
driver.find_element_by_xpath('//*[@class="actions-combo"]/button[@class="reply-button js-only"]')