selenium上的selexbox存在检查错误 用python在Selenium上编写代码
我一直在做爬虫。我还不完全明白。所以我有一个问题。也许是34行代码。我很担心马克 它的用途是time.sleep2方法。因为它在更改sel.select_by_visible_textvalue时没有检测到选择框 我该怎么做?我不想占用时间。睡眠2法。selenium上的selexbox存在检查错误 用python在Selenium上编写代码,python,selenium,selenium-webdriver,web-crawler,Python,Selenium,Selenium Webdriver,Web Crawler,我一直在做爬虫。我还不完全明白。所以我有一个问题。也许是34行代码。我很担心马克 它的用途是time.sleep2方法。因为它在更改sel.select_by_visible_textvalue时没有检测到选择框 我该怎么做?我不想占用时间。睡眠2法。 我已经尝试了预期的条件。元素的存在不起作用。我想这是关于dropbox的问题。这个大小基本上不是因为我尝试了另一个大小并尝试了预期的\u条件时它表现得很好。位于的\u元素\u的存在将不起作用,因为您可以使用的条件是元素可单击、元素可见等等。 用于
我已经尝试了预期的条件。元素的存在不起作用。我想这是关于dropbox的问题。这个大小基本上不是因为我尝试了另一个大小并尝试了预期的\u条件时它表现得很好。位于的\u元素\u的存在将不起作用,因为您可以使用的条件是元素可单击、元素可见等等。 用于显式等待的元素可用且也可单击,但由于其他元素重叠,因此该元素失败 由于另一个元素的重叠需要时间才能消失,我们必须等待重叠消失,然后才能单击该元素。 显式等待可以等待元素出现并可单击,它已经存在,但被其他元素隐藏
在这种情况下,我们必须使用time.sleep进行硬等待是否收到错误消息?你能告诉我你为什么要取消时间吗。sleep@thebadguy对不起,我迟到了。我正在修电脑。我回来谈正事了。你的例子很好。这个问题不是很重要。我发生了一些问题,以防我断开了一段时间的网络连接。好的,我知道了。那么while语句呢?wait.sleep->dropbox click->check element with before element->wait.sleep->dropbox click->check element with before element。很抱歉这是我的附件。我想要完美地编写代码
from selenium import webdriver
from selenium.webdriver.support.select import Select
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
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("https://motul.lubricantadvisor.com/Default.aspx?data=1&lang=ENG&lang=eng")
def getallcars():
wait = WebDriverWait(driver, 10)
wait.until(EC.presence_of_element_located((By.ID, "ctl00_ContentPlaceHolder1_rptCategoryBtn_ctl01_btnImage")))
driver.find_element(By.ID, "ctl00_ContentPlaceHolder1_rptCategoryBtn_ctl01_btnImage").click()
wait.until(EC.presence_of_element_located((By.ID, "ctl00_ContentPlaceHolder1_lblSelectedMake")))
driver.find_element(By.ID, 'ctl00_ContentPlaceHolder1_lblSelectedMake').click()
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "#ctl00_ContentPlaceHolder1_lstMake")))
el = driver.find_element(By.NAME,"ctl00$ContentPlaceHolder1$lstMake")
car =[]
for option in el.find_elements(By.TAG_NAME,'option'):
car.append((option.text).encode('utf8'))
return car
cars=getallcars()
for value in cars:
drop = driver.find_element(By.CSS_SELECTOR, '#ctl00_ContentPlaceHolder1_lstMake')
sel = Select(drop)
sel.select_by_visible_text(value)
time.sleep(2) #<---- THIS POINT!!
driver.find_element(By.ID,'ctl00_ContentPlaceHolder1_HeaderModel').click()
el2 = driver.find_element(By.NAME, "ctl00$ContentPlaceHolder1$lstModel")
print "The models for %s are:" %value
for option in el2.find_elements(By.TAG_NAME,'option'):
print option.text
action = ActionChains(driver)
action.move_to_element_with_offset(el2, 300, 200)
action.click()
action.perform()
driver.find_element(By.CSS_SELECTOR,'#ctl00_ContentPlaceHolder1_HeaderMake').click()