。单击selenium不一致工作的功能-chrome

。单击selenium不一致工作的功能-chrome,selenium,Selenium,我有这个简单的代码来点击第一个论文链接肿瘤免疫微环境的类器官建模。 我的代码有时会工作,但大约50%的时间它只是跳过。单击(),然后转到下面的打印。任何帮助都将不胜感激 实际上,问题不在于等待时间。您在这一行中犯了一个小错误:element=WebDriverWait(driver,5)。直到(EC.element\U to\U be\U clickable((By.LINK\U TEXT,str(title)))。单击() 首先,title是selenium.webdriver.remote.

我有这个简单的代码来点击第一个论文链接
肿瘤免疫微环境的类器官建模。


我的代码有时会工作,但大约50%的时间它只是跳过
。单击()
,然后转到下面的打印。任何帮助都将不胜感激

实际上,问题不在于等待时间。您在这一行中犯了一个小错误:
element=WebDriverWait(driver,5)。直到(EC.element\U to\U be\U clickable((By.LINK\U TEXT,str(title)))。单击()

首先,title是selenium.webdriver.remote.webelement.webelement
类型的变量。当你把它转换成str时,你会得到:
。所以这不是获取文本的正确方法

正确的方法是使用
.text
。将
str(title)
替换为
title.text
。你的代码应该有效。以下是最终代码:

title = WebDriverWait(driver,5).until(
            EC.presence_of_element_located((By.CLASS_NAME, "docsum-title")))

print('found title '+ title.text)

element = WebDriverWait(driver,5).until(EC.element_to_be_clickable((By.LINK_TEXT , title.text))).click();

print('found link to click')

正如Arundeep所指出的,你可以增加等待时间,使你的代码更好。但这是ur代码中的主要问题。

将时间从5增加到更大的值。Webdriver每隔500毫秒等待增量5秒,可能会错过元素。实际上,他认为他在其他地方设置了标题,因为它在打印过程中没有被窃听。title\u wait->str(title)你能重新表述你的评论吗?我无法理解你想要表达什么。他的变量是title\u wait而不是title,因此如果是这样的话,它甚至不能工作50%。这是y我在回答中将
title\u wait
更改为
title
。如果他想从第一个docsum中抓取文本并单击第一个匹配的链接,它就工作了。
title = WebDriverWait(driver,5).until(
            EC.presence_of_element_located((By.CLASS_NAME, "docsum-title")))

print('found title '+ title.text)

element = WebDriverWait(driver,5).until(EC.element_to_be_clickable((By.LINK_TEXT , title.text))).click();

print('found link to click')