【问题标题】:Is it possible to grab source code from a web page and change it with selenium + python? [duplicate]是否可以从网页中获取源代码并使用 selenium + python 进行更改? [复制]
【发布时间】:2020-03-11 20:05:36
【问题描述】:

我正在尝试单击单选按钮以显示添加新页面部分。但是我不断收到的错误代码是 AttributeError: 'WebElement' object has no attribute 'find_element_by_class'

我能够通过 class= 'button' 找到按钮,但是当我使用 .click() 时,我不断收到该错误。如果我遇到不可点击的错误,我了解。

我确实注意到,当未单击单选按钮时,aria-checked 元素设置为 = Flase,当它单击时它更改为 = True。所以我猜这就是我要解决这个问题所要做的。

所以我的问题是使用 python + selenium,我怎样才能将其更改为 true 以便显示其余部分?我对编码还是很陌生,所以我希望我能尽可能地解释我的情况,我终于弄清楚了 Shadow DOM。

这是我的代码

from selenium import webdriver

def expand_shadow_element(element):
    shadow_root = cdriver.execute_script('return arguments[0].shadowRoot', element)
    return shadow_root
#chrom driver
cdriver = webdriver.Chrome(executable_path='C:\\Users\\name\Downloads\\chromedriver.exe')
#open up page to chrome settings.
cdriver.get('chrome://settings/')

root1 = cdriver.find_element_by_tag_name('settings-ui')
shadow_root1 = expand_shadow_element(root1)

root2 = shadow_root1.find_element_by_id('main')
shadow_root2 = expand_shadow_element(root2)

root3 = shadow_root2.find_element_by_tag_name('settings-basic-page')
shadow_root3 = expand_shadow_element(root3)

root4 = shadow_root3.find_element_by_tag_name('settings-on-startup-page')
shadow_root4 = expand_shadow_element(root4)

root5 = shadow_root4.find_element_by_tag_name('controlled-radio-button')
shadow_root5 = expand_shadow_element(root5)

#error code herer code
root6 = shadow_root5.find_element_by_class('disc-wrapper').click()

【问题讨论】:

  • 您能否提供您当前使用的代码,该代码会为您提供该错误消息。
  • @mikarm 是的,我已将我的代码添加到我的问题中。
  • 它必须是find_element_by_class_name() - 最后是_name

标签: python selenium selenium-webdriver selenium-chromedriver


【解决方案1】:

您可以在java中执行以下操作,您无法更改代码,因为大多数网站都是动态创建的,而不是静态呈现的。

WebDriver driver = new ChromeDriver();
driver.get("https://www.googel.com/");
String str = driver.getPageSource();
System.out.println(str);

我确信在 python 中也可以做到这一点,

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument('--ignore-certificate-errors')
options.add_argument("--test-type")
options.binary_location = "/usr/bin/chromium"
driver = webdriver.Chrome(chrome_options=options)
driver.get('https://python.org')
driver.getPageSource();

【讨论】:

    猜你喜欢
    • 2017-01-25
    • 1970-01-01
    • 2015-03-03
    • 1970-01-01
    • 1970-01-01
    • 2019-06-08
    • 2013-08-20
    • 1970-01-01
    • 2021-12-05
    相关资源
    最近更新 更多