我正在尝试使用Selenium和ChromeDriver与Lowes网站(https://www.lowes.com/)进行交互。加载主页后,我想更改位置,但是无法与网站进行交互。手动和通过Selenium单击更改位置按钮会导致页面永久加载,并最终引发TimeOutException。关于可能会发生这种情况以及如何解决该问题的任何想法?
当我使用Google Chrome,Mozilla Firefox和Internet Explorer手动加载网站时,我已经加载了该网站并与之进行了很好的交互,因此我认为这并不是网站本身的问题。
我还使用了Selenium和ChromeDriver来加载和与40多个其他网站进行交互,完全没有问题,因此我不认为这与Selenium / ChromeDriver / Chrome以及任何版本不兼容问题有关。我的Chrome浏览器的版本为71.0.3578.98,而驱动程序的版本为71.0.3578.137。我正在Windows NT 6.1.761 SP1 x86_64和Python 3.6上的Spyder上运行脚本(如下所示)。
我正在运行的代码如下:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import time
def click_button(x_path)
button = WebDriverWait(driver, 15).until(EC.presence_of_element_located((By.XPATH, x_path)))
button = driver.find_element_by_xpath(x_path)
button.click()
time.sleep(2)
pass
#the issue persists with and without the commented lines
url = 'https://www.lowes.com/'
try:
#options = webdriver.ChromeOptions()
#options.add_argument("start-maximized")
#options.add_argument("disable-infobars")
#options.add_argument("--disable-extensions")
driver = webdriver.Chrome('C://Temp//chromedriver.exe') #,options=options)
#driver.implicitly_wait(30)
driver.get(url)
except Exception as e:
print(e)
#The following code hasn't worked, nor has manually interacting with the website at this point
sign_up_save_close = '//*[@id="emailSignUpDialog"]/div[2]/div/div/div/button
button_click(sign_up_save_close)
find_store_x_path = '//*[@id="currentStoreWrapper"]/div/div[2]/div[2]/a'
button_click(find_store_x_path)
我怀疑这可能与网站与ChromeDriver的唯一交互方式有关。
我调查了该网站是否知道ChromeDriver正在与之交互,但是没有迹象表明该网站实际上检测到了ChromeDriver,即使使用了如上所述的自定义选项,该问题仍然存在。
我曾尝试使用geockdriver在Firefox中运行它,但是我无法使我的geckodriver正常工作。但是,我想保留关于Chrome的问题。
有什么想法吗?
编辑:我将添加代码来处理“注册并保存”,但是弹出不是问题。就像我说的那样,我尝试过手动与代码进行网站交互。单击查找商店最终将使网站永久加载。我也欢迎在某些位置访问此网站上产品页面的其他解决方案。
答案 0 :(得分:0)
click_button()
,但您
将其称为button_click()
。Find a store
按钮会显示Access Denied
。因此,显然该站点具有硒检测和阻断功能。