【问题标题】:( Beginner ) If variable selenium on python(初学者)如果python上的变量selenium
【发布时间】:2021-11-19 09:03:26
【问题描述】:

我是编码新手,我正在尝试使用 Selenium 学习网页自动化。

到目前为止,我已经成功打开了一个网页,让它点击我想要点击的地方,然后输入我想要的任何单词。但是,我正在努力处理 if 变量。

基本上我想告诉 Selenium 点击我通过 xpath 找到的按钮。反过来,这个按钮应该在屏幕上显示一个新元素,我也可以通过 xpath 找到它。但是,有时当我单击此按钮时,新元素不会显示。那么如何告诉 Selenium 如果元素不显示它应该刷新页面并单击,直到显示新元素,然后才能单击新元素?

代码:

from selenium import webdriver

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.common.keys import Keys

from selenium.common.exceptions import NoSuchElementException


driver = webdriver.Firefox()

url = "https://www.compumsa.eu/item/GV-R55XTOC-4GD-Gigabyte-Radeon-RX-5500-XT-4GB-OC-PCIE-9320"

driver.get(url)

driver.maximize_window()

click = driver.find_element_by_xpath('//*[@id="ContentPlaceHolderMain_LBAddItem"]')

click.click()

itempanier = driver.find_element_by_xpath('//*[@id="SpanCaddy"]')


if (itempanier.is_displayed()

【问题讨论】:

  • 请向我们展示您拥有的任何代码。这将有助于我们为您提供建议/解决方案。
  • 当然可以了:prnt.sc/1tsun13
  • 很难从图像中读取信息,请尝试使用文本格式的代码更新您的问题。
  • 我的错我编辑了我的问题

标签: python selenium if-statement variables


【解决方案1】:
  1. 使用显式等待。
  2. 使用while无限循环,并在内部使用try - exceptfind_elements,基本上find_elements会在Selenium-Python中返回一个list并检查它的大小,如果>0元素是如果不可见,则转到 else 块并重新加载页面,这将重复,直到它从 while 循环中中断。

仅在两个条件上中断:

  1. 如果满足 if 块条件或某些原因代码已进入 except 块。

代码:

driver = webdriver.Chrome(driver_path)
driver.maximize_window()
driver.implicitly_wait(30)
wait = WebDriverWait(driver, 30)
driver.get("https://www.compumsa.eu/item/GV-R55XTOC-4GD-Gigabyte-Radeon-RX-5500-XT-4GB-OC-PCIE-9320")
click = wait.until(EC.element_to_be_clickable((By.ID, "ContentPlaceHolderMain_LBAddItem")))
click.click()

while True:
    try:
        itempanier = driver.find_elements_by_xpath('//*[@id="SpanCaddy"]')
        if len(itempanier) > 0:
            print('Meaning SpanCaddy web element is visible')
            # do some stuff like clicking on it and then break from the loop. 
            #break
        else:
            print('Meaning SpanCaddy web element is not visible')
            # do some other stuff like reload
            driver.refresh()
    except:
        print('Something went wrong')
        pass
        break

【讨论】:

  • 非常感谢您抽出宝贵时间帮助我,我将立即尝试
  • 当然让我知道它是怎么回事,我也找不到//*[@id="SpanCaddy"],但既然你提到了in turn this button should display a new element on the screen that i can also locate by xpath,,我想你可以从你的一端找到。
  • 我会继续努力的,谢谢
猜你喜欢
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 2012-07-31
  • 1970-01-01
  • 1970-01-01
  • 2013-05-19
  • 1970-01-01
  • 2014-05-11
相关资源
最近更新 更多