click()无法在难以浏览的网站上运行

我是Python的新手,也是Selenium的新手。我想单击没有类或id属性的网站上的按钮。

我尝试将XPath与find_element_by_xpath()click()一起使用,但似乎什么也没做,或者只是生成错误。

from selenium import webdriver
from config import my_user,my_password


browser = webdriver.Safari()
browser.set_window_size(1600,1200)
browser.set_window_position(0,0)
browser.get('http://thefutoncritic.com/myfuton/listings/')

email_box = browser.find_element_by_name('email')
email_box.send_keys(my_user)
password_box = browser.find_element_by_name('password')
password_box.send_keys(my_password)
password_box.submit()

listings_button = browser.find_element_by_xpath(
    '//html/body/div/table/tbody/tr[1]/td[1]/table[4]/tbody/tr/td[6]/div/a')
listings_button.click()

网站摘录:

<tbody><tr height="37">
...
<td width="150">
<div style="width:150; height=37; background-image:url('/images/my-listings.jpg'); background-position:0 -37px;">
<a href="/myfuton/listings/"><img src="/images/spacer.gif" width="150" height="37" border="0">
</a>
</div>
</td>
</tr>   
</tbody>
Traceback (most recent call last):
  File "/Users/tspgallagher/Projects/Python/Sandbox/temp2.py",line 17,in <module>
    listings_button.click()
  File "/Users/tspgallagher/library/Python/3.7/lib/python/site-packages/selenium/webdriver/remote/webelement.py",line 80,in click
    self._execute(Command.CLICK_ELEMENT)
  File "/Users/tspgallagher/library/Python/3.7/lib/python/site-packages/selenium/webdriver/remote/webelement.py",line 633,in _execute
    return self._parent.execute(command,params)
  File "/Users/tspgallagher/library/Python/3.7/lib/python/site-packages/selenium/webdriver/remote/webdriver.py",line 321,in execute
    self.error_handler.check_response(response)
  File "/Users/tspgallagher/library/Python/3.7/lib/python/site-packages/selenium/webdriver/remote/errorhandler.py",line 242,in check_response
    raise exception_class(message,screen,stacktrace)
selenium.common.exceptions.ElementNotInteractableException: Message: 
aappww 回答:click()无法在难以浏览的网站上运行

请检查以下带有waitt和相对xpath的解决方案

driver.get("http://thefutoncritic.com/myfuton/listings/")


element=WebDriverWait(driver,20).until(EC.visibility_of_element_located((By.XPATH,"//table[4]//tbody[1]//tr[1]//td[6]//div[1]//a[1]//img[1]")))
element.click()
element0=WebDriverWait(driver,"//td[contains(text(),'Welcome to MYFUTON,our new - and completely free')]")))

print(element0.text)
#     print(elements)
# driver.find_element_by_xpath("//div[@class='bubble-element GroupItem group-item entry-1']//button[@class='fa fa-spotify inner-element bubble-element clickable-element']").click()
print driver.current_url
,

这可能有效:

browser.find_element_by_xpath("//a[contains(@href,'/myfuton/listings/')]")

编辑

使用等待在预期条件下可点击的元素可以解决问题,或者至少可以指示您可能的问题所在:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

element = WebDriverWait(driver,20).until(
EC.element_to_be_clickable((By.XPATH,"//a[contains(@href,'/myfuton/listings/')]")))

element.click();

这是假设元素需要一段时间才能被点击。事实并非如此。也许该元素被弹出窗口或类似的东西遮盖了。在这种情况下,您可以做的是模拟链接之前直接单击元素的行为,然后模拟按TAB键,然后按ENTER。

本文链接:https://www.f2er.com/3164393.html

大家都在问