我不知道如何单击此按钮。它具有图像和文本之类的标识符,但我不确定如何利用它们发挥自己的优势。
我尝试过使用XPATH,我尝试过使用文本,我尝试过使用图像的链接,但我无法完全使用它
我的代码:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.LINK_TEXT, "Continue Watching"))).click()
按钮HTML:
<button style="margin-top: 15px;
width: 240px;
height: 46px;
background-color: #69b8d6;
margin: 50px auto;
border-radius: 4px;
color: white;
display: block;
margin-left: 159px;
font-size: 16px;"><img style="padding-right:15px;" src="http://img.encrave.tv/global/watchCamcorder.png">Continue Watching</button>
很抱歉,如果此按钮html变成实际的按钮,而我不确定如何处理。
我的预期结果是“找到并等待按钮可单击”。然后单击它。我的实际结果是什么也没有发生,并且控制台中弹出错误。
提高MaxRetryError(_pool,url,错误或ResponseError(原因)) urllib3.exceptions.MaxRetryError:HTTPConnectionPool(host ='127.0.0.1', port = 49951):网址超过了最大重试次数: / session / 4100d1e939db4a44f287a50f5e9be234 / element(由 NewConnectionError(':无法建立新的连接:[WinError 10061]否 由于目标计算机主动拒绝,因此可以建立连接 它))
答案 0 :(得分:2)
对我来说,在元素可以通信之前,我正在杀死驱动程序实例。因此,只需确认一次,确定您的代码是否在config / setup中发生了什么。
答案 1 :(得分:0)
请您尝试通过LINK_TEXT查找它,但它不是链接
可以尝试这个By.xpath("//*[text()='Continue Watching']"
答案 2 :(得分:0)
要对所需元素进行click()
,必须为element_to_be_clickable()
引入 WebDriverWait ,并且可以使用以下任一解决方案:
使用CSS_SELECTOR
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button>img[src*='tv/global/watchCamcorder']"))).click()
使用XPATH
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[normalize-space() = 'Continue Watching']"))).click()
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
PS :但是,您看到的由于目标计算机主动拒绝连接而无法建立连接是由于其他一些原因,您可以找到一个错误MaxRetryError: HTTPConnectionPool: Max retries exceeded (Caused by ProtocolError('Connection aborted.', error(111, 'Connection refused')))
中的详细讨论答案 3 :(得分:0)
我遇到了类似的错误,但后来我意识到我正在拆机中关闭驱动程序,并在尝试删除Cookie并发送错误之后。
我的建议是查看您的代码,并验证是否在某些说明中关闭了驱动程序。
另一个建议是单击按钮后进入睡眠状态。
在这种情况下,如果可能的话,尝试对元素进行突出显示会很有帮助。