我有这个简单的代码来单击this link上的第一篇论文链接Organoid Modeling of the Tumor Immune Microenvironment.
。
title_wait = WebDriverWait(driver,5).until(
EC.presence_of_element_located((By.CLASS_NAME, "docsum-title")))
print('found title '+str(title))
element = WebDriverWait(driver,5).until(EC.element_to_be_clickable((By.LINK_TEXT, str(title)))).click();
print('found link to click')
我的代码有时会工作,但大约50%的时间它只是跳过.click()
,转到下面的打印。任何帮助都将不胜感激!
发布于 2020-09-30 02:16:38
事实上,问题并不在于等待时间。您在这一行中犯了一个小错误:element = WebDriverWait(driver,5).until(EC.element_to_be_clickable((By.LINK_TEXT, str(title)))).click();
首先,title是一个selenium.webdriver.remote.webelement.WebElement
类型的变量。当你把它转换成一个字符串时,你会得到这个:<selenium.webdriver.remote.webelement.WebElement (session="21a8944e81b4dce8386fdf91067a2ddd", element="17660b77-61f4-4b2d-b5e8-f845ce97ad1e")>
。所以这不是获取文本的正确方式。
正确的方法是使用.text
。用title.text
替换str(title)
。我们的代码应该可以工作。下面是最终的代码:
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所指出的,你可以增加等待时间来使你的代码更好。但这是我们代码中的主要问题。
https://stackoverflow.com/questions/64129017
复制